Django URL调度程序 - 它调用不同URL(正则表达式)的相同视图

时间:2018-02-08 08:15:01

标签: python regex django

您好非常感谢您阅读我的问题帖子。

我在urlpatterns中有不同的url路径模式, 但Django URL调度程序(重新路径)调用相同的视图(views.selected_verb) 对于正则表达式表示的不同URL。

这些网址调用相同的视图(views.selected_verb) http://127.0.0.1:8000/arabic/verbs/%D9%83%D8%A7%D9%86/ http://127.0.0.1:8000/arabic/verbs/%D9%83%D8%A7%D9%86/quiz/

很想知道如何修复它(调用不同的视图)

这是urlpatterns

urlpatterns = [
    path('', views.index, name='index'),
    path('verbs', views.verbs, name='verbs'),
    re_path(r'^verbs/(?P<verb>.+)/$', views.selected_verb, name='selected_verb'),
    re_path(r'^verbs/(?P<verb>.+)/quiz/$', views.quiz, name='quiz'),
]

再次感谢你!

1 个答案:

答案 0 :(得分:0)

我认为问题是%D9%83%D8%A7%D9%86/quiz/会与任何匹配,其中包括[A-Z0-9%]+。也许你可以试着告诉它更明确的东西,比如q。当测验中出现urlpatterns = [ path('', views.index, name='index'), path('verbs', views.verbs, name='verbs'), re_path(r'^verbs/(?P<verb>[A-Z0-9%]+)/quiz/$', views.quiz, name='quiz'), re_path(r'^verbs/(?P<verb>[A-Z0-9%]+)/$', views.selected_verb, name='selected_verb'), ] 字符时,它将失败匹配,然后转到下一个应该是您想要的url模式。

所以我认为它应该都是这样的:

{{1}}