2013-04-22 71 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