我有几个Django模板,其中一些有不同的形式。一些表单使用需要自己的JS和CSS资源的自定义小部件。在每个form.media
我发现放置所有媒体引用的正确位置位于我的<head>
标记中,就在我自己的css
文件上方。如果我愿意,这将允许我覆盖自定义小部件的外观。所以在我的模板中我有类似的东西:
{% block form_media %}
{{ form1.media }}
{{ form2.media }}
{% endblock %}
(某些模板有多个表单)
现在,如果两个表单都使用相同的窗口小部件,则相同的JS和CSS文件将被引用两次。 不能好。是否有合理的方法来统一所有媒体参考?
这只是 begs 的自定义{% context_form_media %}
标记,它将在请求的上下文中呈现所有表单的媒体。
答案 0 :(得分:-1)
您可以使用块和继承来执行此操作。
base.html文件:
<head>
{% block form_css %}
{# base css #}
{% endblock form_css %}
{# rest of head #}
</head>
{# rest of html #}
任何form.html:
{% extends "base.html" %}
{% block form_css %}
{# your form css #}
{% endblock form_css %}
{# your form #}
这样您只能注入适用于该页面的css / js。如果您还希望包含块的上游所有内容,可以使用{{block.super}}启动它。