gpt4 book ai didi

python - Django : How to handle css/js specific to a template tag?

转载 作者:行者123 更新时间:2023-11-28 22:03:29 24 4
gpt4 key购买 nike

背景:

我有一个 css 和一个仅供 Google map 模板标签使用的 js,我在需要时将其包含在我的模板中。

Inside template tag google_map:
...
...
return render_to_string('google_map.html', context)

google_map.html 中,我有所需的 cssjs :

<link rel="stylesheet" type="text/css" href="mystyle.css" />

我的问题是:

我有一个包含 3 个 map 的页面,因此对模板标记进行了 3 次调用。这意味着 css 和 js 在同一页面中包含 3 次。 [不应该发生]

现在,我不能在页面的标题中包含这些 css 和 js,因为所有页面都没有 map ,所以在所有这些页面上这将是一种负担。

如果一个页面有 3 个或更多 map ,我应该怎么做,即使这样也只有一个包含的 css 和 js 而不是重复?

最佳答案

我建议遵循 Paul Irish 为 Markup-based unobtrusive comprehensive DOM-ready execution 引入的模式.这种方法有许多附带的好处,例如封装、命名空间等,但对您来说主要的好处是基于 <body> 上的 id 或类有条件地执行 JavaScript。 .

所以在你的基础模板中改变你的<body>标记为如下内容:

<body class="{% block body_class %}{% endblock %}">

然后,对于需要 map 的模板:

{% block body_class %}{% if block.super %}{{ block.super }} {% endif %}maps{% endblock %}

这看起来有点复杂,但它所做的只是继承为该 block 设置的所有父模板的值。 if block 用于有条件地包含多个类之间所需的空间。

最后,在您的 JavaScript 中,您只需按照文章所述为“ map ”创建一个模块,并将所有特定于 map 的 JS 放在那里。

关于python - Django : How to handle css/js specific to a template tag?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9065406/

24 4 0