5

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

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

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

(有些模板有不止一种形式)

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

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

4

1 回答 1

-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 }} 开始它。

于 2014-10-29T09:20:06.273 回答