我有一个动态 URL 配置如下:
path('segment/', func1, name='func1'),
path('segment/<str:string>/', string, name='string'),
但是,当我转到https://example.com/segment/watch?v=nTeq0U_V15U
(watch?v=nTeq0U_V15U
字符串)时,中间会自动添加一个斜线,使其成为https://example.com/segment/watch/?v=nTeq0U_V15U/
。有趣的是,即使我没有包含 3 个段的 URL 模式,也不会引发 404 错误urls.py
。但是,我的问题是为什么要添加斜线,我该如何避免它?
因为设置
APPEND_SLASH
[ Django-doc],默认设置为True
。当给定路径未找到匹配项且路径不以斜杠结尾时,将重定向到带斜杠的路径,因此浏览器将尝试获取以斜杠结尾的页面。
但这个问题显示出一些误解。事实上,如果你写:
那么
?v=nTeq0U_V15U
就不是路径的一部分,而是querydict的一部分,所以它不会匹配<str:string>
,只会watch
匹配。因此,您在您的视图中检索到以下内容: