Python Django:如何处理特定于模板标记的css/js?

Python Django:如何处理特定于模板标记的css/js?,python,django,django-templates,Python,Django,Django Templates,背景: 我有一个css和一个js,它只被googlemaps模板标签使用,我会在需要的地方将它包含在我的模板中 Inside template tag google_map: ... ... return render_to_string('google_map.html', context) 在google_map.html中,我有所需的css和js: <link rel="stylesheet" type="text/css" href="mystyle.css" />

背景:

我有一个
css
和一个
js
,它只被googlemaps模板标签使用,我会在需要的地方将它包含在我的模板中

Inside template tag google_map:
...
...
return render_to_string('google_map.html', context)
google_map.html
中,我有所需的
css
js

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

我的问题是:

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

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


我应该怎么做,这样,如果一个页面有3个或3个以上的映射,即使只有一个css&js包含,也不会重复?

您可以在扩展的基本模板的
部分使用一个新的django块:

<head>
  /* ... other css/js calls */
  {% block googlemapassets %}{% endblock %}
</head>

我建议遵循Paul Irish为我们介绍的模式。这种方法有许多附带的好处,如封装、名称空间等,但主要的好处是基于
上的id或类有条件地执行JavaScript

因此,在基本模板中将
标记更改为以下内容:

<body class="{% block body_class %}{% endblock %}">
这看起来有点复杂,但它所做的只是继承为该块设置的任何父模板的值。
if
块用于有条件地包括多个类之间所需的空间


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

显而易见,但我正在寻找更好的东西。
<body class="{% block body_class %}{% endblock %}">
{% block body_class %}{% if block.super %}{{ block.super }} {% endif %}maps{% endblock %}