Django URL 指向错误的视图
Django URL directing to wrong view
我正在创建一个 Django 应用程序并有几个 URL'S
path('survey/<url_id>/<token>/', views.take_questionnaire, name='take-survey'),
path('survey/results/<url_id>/', views.view_results, name='view-results'),
我正在尝试访问 'view-results' url -
http://127.0.0.1:8000/survey/results/lqH16jwM19Y6LLd/ - 但出于某种原因,这会触发 'take-survey' url。如果我更改 url 的顺序,它们似乎可以工作,但我很好奇是什么原因造成的。
我以前从未遇到过这种情况,也许我在学习 django urls 时遗漏了什么。有人可以解释为什么第一个 URL 被触发而不是第二个吗?
网址非常相似。
所有两个 url 都匹配第二和第三位的字符串。
如果您将 view-results
更改为:
path('survey/results/<b>view</b>/<url_id>/', views.view_results, name='view-results'),
会成功的。
另请参阅 Django 的 examples。
将 view-results
路线移到 take-survey
路线上方。
url 模式按顺序解析并返回 take-survey
因为 url /survey/results/lqH16jwM19Y6LLd/
适合 survey/<url_id>/<token>/
以及 view-results
模式。
更改顺序可确保任何 url /survey/results/some-id/
将始终转到 view-results
。
path('survey/results/<url_id>/', views.view_results, name='view-results'),
path('survey/<url_id>/<token>/', views.take_questionnaire, name='take-survey'),
我正在创建一个 Django 应用程序并有几个 URL'S
path('survey/<url_id>/<token>/', views.take_questionnaire, name='take-survey'),
path('survey/results/<url_id>/', views.view_results, name='view-results'),
我正在尝试访问 'view-results' url - http://127.0.0.1:8000/survey/results/lqH16jwM19Y6LLd/ - 但出于某种原因,这会触发 'take-survey' url。如果我更改 url 的顺序,它们似乎可以工作,但我很好奇是什么原因造成的。
我以前从未遇到过这种情况,也许我在学习 django urls 时遗漏了什么。有人可以解释为什么第一个 URL 被触发而不是第二个吗?
网址非常相似。
所有两个 url 都匹配第二和第三位的字符串。
如果您将 view-results
更改为:
path('survey/results/<b>view</b>/<url_id>/', views.view_results, name='view-results'),
会成功的。
另请参阅 Django 的 examples。
将 view-results
路线移到 take-survey
路线上方。
url 模式按顺序解析并返回 take-survey
因为 url /survey/results/lqH16jwM19Y6LLd/
适合 survey/<url_id>/<token>/
以及 view-results
模式。
更改顺序可确保任何 url /survey/results/some-id/
将始终转到 view-results
。
path('survey/results/<url_id>/', views.view_results, name='view-results'),
path('survey/<url_id>/<token>/', views.take_questionnaire, name='take-survey'),