我刚刚在django完成了我的第一个小webapp,我喜欢它.我即将开始将旧的生产PHP站点转换为django,作为其模板的一部分,还有一个导航栏.
在PHP中,我在模板代码中检查每个导航选项的URL与当前URL,如果它们对齐,则应用CSS类.这太可怕了.
是否有更好的django或处理模板中的代码的好方法?
首先,我将如何获取当前的URL?
我正在Django中编写一个自定义标记,它应该输出存储在用户会话中的值,但我找不到从自定义标记函数中访问会话对象的方法.有没有办法做到这一点,没有手动将会话对象分配给上下文变量?
我有一个base.html模板,其中包含一个链接列表.
例:
<div id="sidebar1">
<ul>
<li><a href="/" title="">Index</a></li>
<li><a href="/stuff/" title="" class="current">Stuff</a></li>
<li><a href="/about/" title="">About Me</a></li>
<li><a href="/contact/" title="">Contact Me</a></li>
</div>
Run Code Online (Sandbox Code Playgroud)
然后我在views.py中为index.html,stuff.html,about.html和contact.html提供了每个定义.这些模板中的每一个都只是从base.html模板派生而来,并设置各自的标题和内容.
我的问题是关于上面/我有一个类="当前"的东西.
我想让我所在的当前页面具有该类属性.
我可以在每个视图中设置一个不同的变量,如current_page ="about",然后在模板中与{% ifequal %}每个链接的每个类元素进行比较,但这似乎是重复工作(因为额外的视图变量).
有没有更好的办法?也许如果有一种方法来获取模板自动填充的视图函数名称,我不需要设置额外的变量?它似乎也有很多ifequals.