【发布时间】:2013-10-16 14:48:36
【问题描述】:
我正在实现bootstrap navbar,如本例中所示here
导航栏中的项目是 <li>'s ,“选定”项目具有属性 class="active":
<li class="active"> <a href="#"> Link1 </a> </li>
<li> <a href="#"> Link2 </a> </li>
在 Django 中,这些项目将位于一个模板中,该模板包含在任何应该显示导航栏的模板中。我正在考虑这样做:
<li> <a href="/" class="{% if template_name == "home.djhtml" %}active{% endif %}"> Home </a> </li>
<li> <a href="about/" class="{% if template_name == "about.djhtml" %}active{% endif %}"> About </a> </li>
<li> <a href="contact/" class="{% if template_name == "contact.djhtml" %}active{% endif %}"> Contact </a> </li>
我想知道是否有内置的方法来获取template_name(即正在渲染的模板,在views.py 中传递给render_to_response())
当然,我可以将template_name 变量显式添加到render_to_response(),这样就可以解决问题。但是考虑到 DRY,我觉得这不应该是必要的。
【问题讨论】:
-
显式优于隐式:)
-
你不应该硬编码你的模板中的url(使用
{% url %}模板标签代替),你应该依赖url和request.path——而不是模板名称——来检查链接是否处于活动状态。 -
感谢@bruno 指出这一点,我会改变的。
标签: django twitter-bootstrap django-templates twitter-bootstrap-3 navbar