如何在保留Django Admin默认路径的前提下正确配置自定义URL 'admin/success/'
如何在保留Django Admin默认路径的同时配置
admin/success/自定义URL? 这个问题我之前也碰到过,核心原因就是Django的URL路由匹配顺序在搞鬼!
问题根源
你最开始把path("admin/", admin.site.urls)放在了自定义URL的前面,Django的URL匹配是从上到下按顺序执行的:当你访问admin/success/时,系统会先匹配到admin/这个路径,然后把后面的success/部分交给Django Admin的内部路由去处理,但Admin的路由表里根本没有success/这个路径,自然就返回404错误了。而注释掉Admin路径后,自定义URL就能被正常匹配到,所以可以显示内容。
解决方案
只需要调整一下URL的顺序,把你的自定义admin/success/路径放在admin/路径的前面就可以了:
# core/urls.py urlpatterns = [ # 自定义URL优先匹配 path("admin/success/", success, name='success'), # Admin默认路径放在后面 path("admin/", admin.site.urls), ]
调整后效果:
- 访问
admin/success/时,会优先触发你的自定义视图,返回"Hello World" - 访问
admin/时,依然会正常匹配到Django Admin的后台路由
小提醒
如果之后还要添加其他以admin/开头的自定义URL,记得都要把它们放在path("admin/", admin.site.urls)的前面,避免被Admin的路由拦截哦~
内容的提问来源于stack exchange,提问作者Super Kai - Kazuya Ito
相关产品推荐
相关产品推荐

