Django——将request.path分解为每个单词?

Django——将request.path分解为每个单词?,django,django-templates,Django,Django Templates,我想从模板中的request.path获取URL,并仅对第一个单词进行测试。如果我的URL是: /estimates/commercial 我想从请求路径中删除商业。我希望这在模板中也是可能的,因为我需要在每个页面上进行检查 这在我的Django模板中是可能的吗 编辑-用于澄清 其目的是根据当前正在查看的页面突出显示导航链接。我有一个主导航和一个副导航,我想强调如下: main nav --> [Systems][Estimates] "Systems" sub nav

我想从模板中的
request.path
获取URL,并仅对第一个单词进行测试。如果我的URL是:

/estimates/commercial

我想从
请求路径
中删除
商业
。我希望这在模板中也是可能的,因为我需要在每个页面上进行检查

这在我的Django模板中是可能的吗

编辑-用于澄清

其目的是根据当前正在查看的页面突出显示导航链接。我有一个主导航和一个副导航,我想强调如下:

main nav           --> [Systems][Estimates]
"Systems" sub nav ---> [New][Details][Invoives]
如果我在
Systems
部分的
Details
部分,我希望
System
Details
这两个词是不同的颜色、下划线或其他颜色

如果不编写自己的,我认为在视图代码中执行此操作并将相关部分传递到模板中会更容易。

如果不编写自己的,我认为在视图代码中执行此操作并将相关部分传递到模板中会更容易。

您的选项是:

  • 写一篇

  • 编写自定义模板过滤器。我建议只编写一个分割模板过滤器,然后使用连接和切片过滤器来获得所需的效果。但是,编写一个过滤器来完成整个过程可能会更容易

  • 实话实说,我认为第1个是更好的选择。您已经在使用上下文处理器了,对吗?如果没有,现在就是时间=)

    编辑:

    如果您的路径是/something/foo/bar/estimates/commercial/

    def somename(request):
        primary, secondary  = request.path.split('/')[-2:]
        return { 'primary_name': primary, 'secondary_name': secondary }
    
    将为您提供两个上下文变量,其值为'estimates'和'commercial'。这个想法很容易扩展,甚至变得更抽象,并允许添加任意数量的上下文变量。

    您可以选择:

  • 写一篇

  • 编写自定义模板过滤器。我建议只编写一个分割模板过滤器,然后使用连接和切片过滤器来获得所需的效果。但是,编写一个过滤器来完成整个过程可能会更容易

  • 实话实说,我认为第1个是更好的选择。您已经在使用上下文处理器了,对吗?如果没有,现在就是时间=)

    编辑:

    如果您的路径是/something/foo/bar/estimates/commercial/

    def somename(request):
        primary, secondary  = request.path.split('/')[-2:]
        return { 'primary_name': primary, 'secondary_name': secondary }
    

    将为您提供两个上下文变量,其值为'estimates'和'commercial'。这个想法很容易扩展,甚至变得更抽象,并允许添加任意数量的上下文变量。

    您可以使用它,它可以以多种方式扩展。在中,还有一个示例,说明如何在用户位于某个路径内时突出显示导航项。

    您可以使用该示例,该示例可以通过多种方式进行扩展。在中,还有一个示例,如果用户位于某个路径内,如何突出显示导航项。

    真的吗?因为这意味着对每个视图都这样做,这是一个巨大的痛苦。那么,创建自定义模板过滤器怎么样?真的吗?因为这意味着对每个视图都这样做,这是一个巨大的痛苦。那么,创建一个自定义模板过滤器怎么样?您是否选中了选项1。对我的主导航栏来说就像一个魅力。我的url始终将主导航名称作为url路径中的第一项。因此,上下文处理器可以完美地工作。然而,突出显示第二级导航是相当棘手的,我认为过滤器是合适的。但是,过滤器不需要驻留在应用程序目录中吗?我在一个项目中有几个应用程序,它们构成了整个web应用程序。在每个应用程序中复制过滤代码似乎效率低下。也许我错了?下面建议的过滤器只驻留在一个位置,您可以在任何需要它的模板中按名称加载它。然而,上下文处理器可能仍然是最好的选择。尽管你需要考虑你的具体情况并加以应用。如果你的导航层总是url的最后两个部分,你可以像我在编辑中所做的那样对它进行修改。选项1。对我的主导航栏来说就像一个魅力。我的url始终将主导航名称作为url路径中的第一项。因此,上下文处理器可以完美地工作。然而,突出显示第二级导航是相当棘手的,我认为过滤器是合适的。但是,过滤器不需要驻留在应用程序目录中吗?我在一个项目中有几个应用程序,它们构成了整个web应用程序。在每个应用程序中复制过滤代码似乎效率低下。也许我错了?下面建议的过滤器只驻留在一个位置,您可以在任何需要它的模板中按名称加载它。然而,上下文处理器可能仍然是最好的选择。尽管你需要考虑你的具体情况并加以应用。如果你的导航层总是你的url的最后两个部分,你可以像我在编辑中所做的那样对它进行修改。