2016-06-08 83 views
0

在我們的項目中,我們廣泛使用引導部件模塊。Django模板可重用性

<div class="widget"> 
    <header> 
    <div class="pull-left"> 
     <h2><i class="fa fa-shopping-cart"></i>product-list</h2> 
    </div> 
    <div class="pull-right"> 
     <a class="btn btn-default btn-sm toggle-widget" href="#"> 
     <i class="fa fa-minus"></i> 
     </a> 
    </div> 
    </header> 
    <div class="inner-padding"> 
    ............... 
    </div> 
</div> 

<div class="widget"> 
    <header> 
    <div class="pull-left"> 
     <h2><i class="fa fa-user"></i> 
     user info 
     </h2> 
    </div> 
    <div class="pull-right"> 
     <a class="btn btn-default btn-sm toggle-widget" href="#"> 
     <i class="fa fa-minus"></i> 
     </a> 
    </div> 
    </header> 
    <div class="inner-padding"> 
    ............. 
    </div> 
</div> 

我們重複這些代碼。我的問題是,如何編寫模板並使這些代碼可重用。

如果我作出這樣一個子模板:

<div class="widget"> 
    <header> 
    <div class="pull-left"> 
     <h2><i class="fa {{ icon }}"></i> 
     {{ title }} 
     </h2> 
    </div> 
    <div class="pull-right"> 
     <a class="btn btn-default btn-sm toggle-widget" href="#"> 
     <i class="fa fa-minus"></i> 
     </a> 
    </div> 
    </header> 
    <div class="inner-padding"> 
    {% block content %} 
    {% endblock %} 
    </div> 
</div> 

我可以使用{%包含%}包含模板:

{% include "sub-template.html" with icon="..." title="..." %} 

但我怎麼能呈現 '塊內容'? 此外,我們還可以包括該子template.html多次在一個模板:

{% include "sub-template.html" with icon="1" title="user-info" %} 
{% include "sub-template.html" with icon="2" title="product-list" %} 

我覺得這是一個很常見的情況,但我無法找到使用Django模板的解決方案。有沒有人可以給我一些建議?

+0

「塊內容」究竟發生了什麼? – AKS

+0

@AKS,根據標題和頁面不同的東西,其中包括子模板。 – Leon

回答

1

在這種情況下,我可以考慮的只有header模板:

# header-template.html 

<header> 
    <div class="pull-left"> 
     <h2><i class="fa {{ icon }}"></i> 
     {{ title }} 
     </h2> 
    </div> 
    <div class="pull-right"> 
     <a class="btn btn-default btn-sm toggle-widget" href="#"> 
     <i class="fa fa-minus"></i> 
     </a> 
    </div> 
</header> 

和,然後用它在小部件:

<div class="widget"> 
    {% include "header-template.html" with icon="1" title="user-info" %} 
    <div class="inner-padding"> 
    ............. 
    </div> 
</div> 


<div class="widget"> 
    {% include "header-template.html" with icon="2" title="product-list" %} 
    <div class="inner-padding"> 
    ............. 
    </div> 
</div> 

如果你認爲對於一些小部件的內容也很常見,那麼你也可以創建一個模板,並在小部件中使用它。

+1

TNX爲你的答案,這對我有意義。讓我們等待更好的答案。如果沒有更好的,我會選擇你的解決方案。 – Leon