如何避免在Django模板中重复字符串?
我在想怎么在我的模板中复制一些字符串。具体来说,我想在页面顶部创建一个类似目录的导航,里面有链接可以跳转到页面下方的内容(就像http://www.google.com/transparencyreport/faq/那样)。我希望这些链接的文字和下面的章节标题是一样的。
我考虑过使用{% with %},但是把所有东西都放在{% with %}块里面感觉有点麻烦。
这和在django模板中复制数据的最佳方法是什么?类似,但我并没有在任何地方继承这个模板,所以使用{% block %}其实不太适合。
2 个回答
0
在你的视图中,你可以把内容拆分开来,这样每个标题都可以单独作为模板变量来使用。你可以把和每个标题相关的信息存储成一个字典的列表:
page_content = [
{
'id':'header1',
'header': 'Text for Header 1'
'content' : 'Content Beneath header 1'
},
]
然后,在你的模板中,你可以用类似下面的方式来生成目录:
{% for d in page_content %}
<a href="#{{ d.id }}">{{ d.header }}</a>
{% endfor %}
而你的页面内容可能看起来像这样:
{% for d in page_content %}
<h1 id="#{{ d.id }}">{{ d.header }}</h1><p>{{ d.content }}</p>
{% endfor %}
2
这看起来是一个可以直接使用模板变量的情况,比如你可以用一个从视图传过来的变量(例如 {{ link_name }}
)。
你也可以考虑使用一种叫做模板包含标签的东西,它可以把另一个模板里的重复信息包含进来。