联合Django Form媒体

时间:2013-04-22 21:04:48

标签: django forms media

我有几个Django模板,其中一些有不同的形式。一些表单使用需要自己的JS和CSS资源的自定义小部件。在每个form.media

中正确指定了这些资源

我发现放置所有媒体引用的正确位置位于我的<head>标记中,就在我自己的css文件上方。如果我愿意,这将允许我覆盖自定义小部件的外观。所以在我的模板中我有类似的东西:

{% block form_media %}
{{ form1.media }}
{{ form2.media }}
{% endblock %}

(某些模板有多个表单)

现在,如果两个表单都使用相同的窗口小部件,则相同的JS和CSS文件将被引用两次。 不能好。是否有合理的方法来统一所有媒体参考?

这只是 begs 的自定义{% context_form_media %}标记,它将在请求的上下文中呈现所有表单的媒体。

1 个答案:

答案 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}}启动它。