假设我有一个简单的代码段,我想在我的网站上重复一遍(有时每页多次):
<div class="snippet-css">
<h1>{% block snippet-header %}{% endblock %}</h1>
<div class="snippet-content">
{% block snippet-content %}
{% endblock %}
</div>
<div class="snippet-footer">
{% block snippet-footer%}{% endblock %}
</div>
</div>
我想在同一页面中多次包含此代码段,每次都会使用唯一内容替换代码段标题,代码段内容和代码段页脚块。
定义一个django标签,它接受这两个块作为参数对我来说不好看(HTML代码锁定在Django标签内):
{% generate_snippet heading content footer %}
我也发现了这篇博客文章
http://powertwenty.com/blog/index.php/python/repeating_sections_in_a_django_template
通过将代码段拆分为多个代码来处理问题。
使用Django模板实现此结果的最佳方法是什么?
答案 0 :(得分:4)
您可以将值传递给Django的内置{% include %}
模板标记,如下所示:
{% include "snippet.html" with header="blah" content="content" footer="lalala" %}
您也可以传递变量:
{% include "snippet.html" with header=var1 content=var2 footer=var3 %}
然后在snippet.html中:
<div class="snippet-css">
<h1>{{ header }}</h1>
<div class="snippet-content">
{{ content }}
</div>
<div class="snippet-footer">
{{ footer }}
</div>
</div>
请参阅https://docs.djangoproject.com/en/dev/ref/templates/builtins/#include
答案 1 :(得分:1)
更好的选择是使用inclusion tag - 你可以在标签中定义你喜欢的任何变量,它们将被传递给模板片段进行渲染。