在Django中,如何获取模板中特定URL所遵循的模式名称?

时间:2014-04-01 16:20:28

标签: django django-templates pattern-matching url-routing

我一直在做很多关于这个主题的谷歌搜索,并且经历了大量的Django文档,但我似乎无法通过一个简单的解决方案找到一个看起来应该是一个非常简单的问题的正确答案。所以希望Django兽医可以提供帮助。

假设我有以下urlconf:

urlpatterns = patterns('',
    ....
    url(r'^directory/users/$', UserView.as_view(), name='users'),
    url(r'^directory/users/(?P<user_id>[0-9]+)/$',UserView.as_view(), name='users'),
    ....
)

我希望能够在模板中测试遵循哪种模式,如下所示:

{% if name_of_last_followed_url_pattern == 'users' %}
    ....
{% endif %}

现在有人会认为Django会把它藏在某个地方并且能够把它吐回给我。但我找不到任何与&#34; name_of_last_followed_url_pattern&#34;相对应的内容。在文档或我的搜索中的任何位置。我有什么想法可以访问这个(如果没有提供,为什么不提供)?

1 个答案:

答案 0 :(得分:3)

您需要将请求添加到添加到TEMPLATE_CONTEXT_PROCESSORS的模板django.core.context_processors.request的上下文处理器。然后在模板中你可以做

{% if request.resolver_match.url_name == 'users' %}
....
{% endif %}

resolver_match还有其他属性,如命名空间,app_name。你可以在这里看到: https://docs.djangoproject.com/en/1.6/ref/urlresolvers/#django.core.urlresolvers.ResolverMatch