如何避免在Django模板中重复字符串?

0 投票
2 回答
549 浏览
提问于 2025-04-16 15:23

我在想怎么在我的模板中复制一些字符串。具体来说,我想在页面顶部创建一个类似目录的导航,里面有链接可以跳转到页面下方的内容(就像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 }})。

你也可以考虑使用一种叫做模板包含标签的东西,它可以把另一个模板里的重复信息包含进来。

撰写回答