【发布时间】:2015-08-22 18:36:46
【问题描述】:
我有一个 Django 模板,它显示使用模板标签生成的链接,我想将它作为上下文变量发送:
views.py:
def my_view(request):
...
link = '''<a href="{% url 'quests:drop' s.id %}">Drop</a>'''
context = {
'link': link,
}
return render(request, "my_template.html" , context)
我正在 my_template.html 中尝试这个:
{{ link | safe }}
但链接实际上呈现为“{% url 'quests:drop' s.id %}”
有没有办法让模板引擎识别和执行上下文变量中发送的模板标签?
编辑:
我为什么要这样做是因为我实际上会向模板发送一个按钮列表,每个按钮都有一个不同的链接和文本,它们将被循环通过(在这个例子中,循环通过各种 's' 对象),并且多个视图将使用该模板(每个视图都有自己的按钮集),因此按钮非常特定于上下文。
我的模板正在成为处理所有情况的逻辑意大利面条,并且在上下文中发送按钮似乎会更加干燥,并且会产生更清洁、更易于阅读的模板。
编辑 2:
另一个可以解决问题的选择是如果我可以通过更改部分:
link_data = ['quests:drop','Drop']
context = {
'link_data': link_data,
}
return render(request, "my_template.html" , context)
然后模板将具有:
<a href="{% url '{{link_data.0}}' s.id %}">{{link_data.1}}</a>
但是,{{link_data}} 没有呈现,我得到了错误:
Reverse for '{{ link_data.0 }}' ... not found.
【问题讨论】:
标签: django