如何移除Django中自动添加的URL首个斜杠?
Django URL双斜杠问题解决办法
首先得明确:Django的path()函数第一个参数不需要加开头的斜杠。因为Django在处理请求URL时,会自动把URL开头的/去掉,再和你配置的path规则匹配。你写path('/polls', ...),相当于让Django匹配/polls(去掉请求URL的开头斜杠后),而请求URL本身是http://127.0.0.1:8000/polls,去掉开头斜杠后是polls,匹配不上你写的/polls,反而会因为路由匹配逻辑,最终拼接出双斜杠的URL。
至于你设置APPEND_SLASH = False没用,是因为这个参数的作用是处理URL末尾是否自动添加斜杠,和开头的斜杠完全没关系,所以改它解决不了你的问题。
给你两个解决方向:
- 最推荐的:直接遵循Django的规范,把path里的开头斜杠去掉,写成
path('polls/', include("polls.urls"))或者path('polls', include("polls.urls")),这样就不会出现双斜杠问题。 - 如果你非要保留开头斜杠的写法(不建议,容易踩其他坑),可以自定义一个中间件,在路由匹配前把请求URL的开头斜杠去掉,同时统一处理path规则里的开头斜杠,但这种做法完全没必要,反而增加复杂度。
内容的提问来源于stack exchange,提问作者gx g
相关产品推荐
相关产品推荐

