2014-03-06 62 views
1

我有一個基本模板(base.html)是這樣的:如何在django模板的某個塊中包裹一些html?

<doctype html> etc etc 
{% block content %}{% endblock %} 

它在我的網站被許多其他模板,但我有一個帶有自己的模板,從tp.html繼承第三方應用程序,它在轉從base.html繼承。這些模板大多都很好,但是我需要將它們的content塊封裝在一個div中。我可以改變第三方模板使用sub_content塊和修改tp.html像這樣:

{% extends "base.html" %} 
{% block content %} 
    <div class="third-party-app"> 
     {% block sub_content %}{% endblock %} 
    </div> 
{% endbock %} 

,但我不希望有修改的第三方應用程序的所有模板。

我想要的是類似於在Smarty模板中找到的{$smarty.block.child},或者實現它的一種方式。有任何想法嗎?

+0

我認爲你能做的最好是覆蓋這些模板。將這些模板複製到模板文件夾中,並通過包含這些包裝元素或通過擴展其他模板來修改它們。 –

回答

0

在base.html中,在{%block content%}的任意一側添加pre_content和post_content塊,然後在tp.html中將您的標籤和標籤添加到這些塊中。稍微不雅,但它會工作,你不必修改所有的模板。

+0

不雅,但值得考慮... – patroqueeet

2

您可以使用block.super像這樣:

的3rdParty模板:

{% block content %} 
    <h1>3rd Party Content 
    {% endblock %} 

您的模板:

{% block content %} 
    <div class="wrapper">{{ block.super }}</div> 
{% endblock content %} 
相關問題