如何解决Django URL 指向错误的视图
我正在创建一个 Django 应用程序并且有几个 URL
path('survey/<url_id>/<token>/',views.take_questionnaire,name='take-survey'),path('survey/results/<url_id>/',views.view_results,name='view-results'),
我正在尝试访问“查看结果”网址 - http://127.0.0.1:8000/survey/results/lqH16jwM19Y6LLd/ - 但出于某种原因,这会触发“调查”网址。如果我更改 url 的顺序,它们似乎可以工作,但我很好奇是什么导致了这种情况。
我以前从未遇到过这种情况,也许我在学习 django url 时遗漏了一些东西。有人能解释为什么第一个 URL 被触发而不是第二个吗?
解决方法
网址非常相似。
所有两个 url 都匹配第二和第三位的字符串。
如果您将 view-results
更改为:
path('survey/results/view/<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
模式。
更改顺序可确保任何网址 /survey/results/some-id/
将始终转到 view-results
。
path('survey/results/<url_id>/',path('survey/<url_id>/<token>/',views.take_questionnaire,name='take-survey'),
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。