2016-06-08 80 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