我有一个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 }}
但链接字面上呈现为&#34; {%url&#39;任务:drop&#39; s.id%}&#34;
有没有办法让模板引擎识别并执行上下文变量中发送的模板标签?
编辑:
为什么我要这样做是因为我实际上会向模板发送一个按钮列表,每个按钮都有不同的链接和文本,这些按钮和文本将被循环(在这个例子中,循环遍历各种&#39; s&#39;对象),多个视图将使用模板(每个视图都有自己的按钮集),因此按钮非常特定于上下文。
我的模板正在变成处理所有情况的逻辑意义,并且在上下文中发送按钮似乎会更加干燥并导致更清晰,更易于阅读的模板。
编辑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.
答案 0 :(得分:1)
参考第二次修改:
模板中的代码应如下所示:
<a href="{% url link_data.0 s.id %}">{{ link_data.1 }}</a>
请注意省略的'{{ }}'
标记。