首页 > 解决方案 > 如何通过request.path检查包含参数的路径?

问题描述

在我的questions应用程序中,url_patternsinmodels.py是:

urlpatterns = [    
    path('<int:question_id>/'     , views.question    , name='question'),
    path('new/'                   , views.new_question, name='newquestion'),    
    path('edit/<int:question_id>/', views.edit        , name='edit'),    
]

在我的模板中,每当我想检查newquestionurl 是否已加载时,我都会尝试以下操作:

{% if 'questions/new' in request.path %}
    some code
{% endif %}

如何检查question包含整数参数的 url 是否已加载 - 的question_id-

标签: djangodjango-templates

解决方案


如果确实需要,可以使用request.resolver_match[Django-doc]获取ResolverMatch对象 [Django-doc],然后获取.view_name属性 [Django-doc]来获取 , 等的名称所以:pathurl re_path

{% if request.resolver_match.view_name == 'edit' %}
    …
{% endif %}

但是话虽这么说,通常如果您的模板需要检查,您应该使用不需要检查的单独模板,特别是因为路径的数量会增加,最终您将更改路径、视图等。通过使用不同的那些,你的影响很小。


推荐阅读