我想从模板中取request.path
的网址,然后对第一个单词进行测试。如果我的网址是这样的:
/estimates/commercial
我想以某种方式从commercial
中移除request.path
。我希望在模板中也可以这样做,因为我需要在每个页面都进行检查。
这可以在我的Django模板中使用吗?
编辑 - 澄清
这样做的目的是根据当前正在查看的页面突出显示导航链接。我有一个主导航和一个子导航,我想强调如下:
main nav --> [Systems][Estimates]
"Systems" sub nav ---> [New][Details][Invoives]
如果我在Details
部分的Systems
部分,我希望System
和 Details
这两个词的颜色不同或下划线或其他东西。
答案 0 :(得分:4)
您的选择是:
编写自定义模板过滤器。我建议只编写一个分割模板过滤器,然后使用连接和切片过滤器来获得所需的效果。但是,编写一个完成整个过程的过滤器可能更容易。
说实话,我认为#1是更好的选择。您正在使用上下文处理器吗?如果没有,现在是时间=)
def somename(request):
return { 'some_context_var': request.path.split('/')[:-1] }
编辑:
如果你的路径是/ something / foo / bar / estimate / commercial /
def somename(request):
primary, secondary = request.path.split('/')[-2:]
return { 'primary_name': primary, 'secondary_name': secondary }
会给你2个上下文变量,其中'估计'和'商业'作为它们的值。这个想法很容易扩展,甚至可以更抽象,并允许添加任意数量的上下文变量。
答案 1 :(得分:1)
您可以使用django-treemenus,可以通过多种方式进行扩展。在manual中,还有一个示例,如果用户位于特定路径内,如何突出显示导航项。
答案 2 :(得分:0)
如果不编写自己的custom template filter,我认为在视图代码中执行此操作会更容易,并将相关部分传递到模板中。