我有几个 Django 模板,其中一些具有不同的形式。一些表单使用需要自己的 JS 和 CSS 资源的自定义小部件。这些资源在每个 form.media
中都正确指定
我发现放置所有媒体引用的正确位置是我的 <head>
标签,就在我自己的上方css
文件。如果我愿意,这将允许我覆盖自定义小部件的外观。所以在我的模板中我有类似的东西:
{% block form_media %}
{{ form1.media }}
{{ form2.media }}
{% endblock %}
(有些模板有不止一种形式)
现在,如果两个表单都使用相同的小部件,那么相同的 JS 和 CSS 文件将被引用两次。这可不好。有没有合理的方法来统一所有媒体引用?
这只是乞求自定义
{% context_form_media %}
标签,它将呈现请求上下文中所有表单的媒体。
最佳答案
您可以使用 block 和继承来做到这一点。
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 #}
这样你就可以只注入(inject)适用于该页面的 css/js。如果您还想包含该 block 的所有上游内容,您可以使用 {{ block.super }} 开始它。
关于django - 统一 Django 表单媒体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16156705/