2013-04-22 57 views
4

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

正确的地方,我发现把所有的媒体引用正确指定是我<head>标签,右上方我自己css文件。这将允许我覆盖自定义小部件的外观,如果我想。所以在我的模板,我有这样的:

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

(一些模板有一个以上的形式)现在

,如果两个形式使用相同的部件,同样的JS和CSS文件将要引用两次。这不能是好的。有没有合理的方法来统一所有的媒体参考?

这只是请求为自定义{% context_form_media %}标记,这将呈现请求的上下文中的所有形式的媒体。

回答

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

+0

我有点惊讶为此赚取降价。有人能解释为什么吗?这只是继承块的一种标准技术。 – 2017-11-09 15:53:03