我有很多要声明为常量的URL,因此可以在模板的for
和if
语句中使用它们。目前,我手动执行此操作,例如:
{% url 'inbox' as inbox %}
{% url 'sent' as sent %}
{% url 'drafts_tasks' as drafts_tasks %}
但是,这感觉有点笨拙,当url数量增加时,每个模板上都会重复加载大量额外的代码。
有没有更好的方法可以遍历URL并声明它们?
以下是我如何使用它们的示例:
{% url 'XXX' as XXX %}
{% for ....
<li class="nav-item {% if request.path == XXX %}active{% endif %}">
<a class="nav-link" href="{{ XXX.url }}">{{ XXX.name }}
</a>
</li>
endfor %}
答案 0 :(得分:0)
最简单的选择是将网址作为列表传递。
class URLView(TemplateView):
template_name = 'urls.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['urls'] = get_my_list_of_urls()
return context
对于重复的代码,您可以使用include
模板标记。
使用重复的模板片段创建文件 templates / includes / url_link_list.html :
<li class="nav-item {% if request.path == xxx %}active{% endif %}">
<a class="nav-link" href="{{ xxx.url }}">{{ xxx.name }}</a>
</li>
然后在视图中定义的 urls.html 文件中,您将包括该片段:
<ul>
{% for url in urls %}
{% with url as xxx %}
{% include 'includes/url_link_list.html' %}
{% endwith %}
{% endfor %}
</ul>