Django模板与views.py跳转Admin后台报NoReverseMatch如何解决
问题修复方案
错误原因
Django内置Admin的路由是带有admin命名空间的嵌套路由集合,在外层path('admin/', admin.site.urls)上自定义的name属性不会生效,Admin后台首页的默认反向解析名称为admin:index。
修复方法
模板端修改
将原有模板中的url调用参数替换为Admin默认的路由名即可:
<a href="{% url 'admin:index' %}" class="btn btn-sm btn-primary px-6">Explore Admin Pannel!</a>
视图端跳转修改
views.py中的redirect参数同样替换为admin:index:
if condition: return redirect('admin:index')
可选兼容方案
如果你需要保留原有代码中'admin'作为路由名的写法,可以在项目urls.py中新增一条别名路由:
from django.shortcuts import redirect urlpatterns = [ path('', include('diagnosis.urls')), path('admin/', admin.site.urls), # 新增别名路由,兼容原有的`admin`名称调用 path('admin-alias/', lambda request: redirect('admin:index'), name='admin'), ]
配置完成后原有模板和视图中的代码无需修改即可正常运行。
内容的提问来源于stack exchange,提问作者Kanchon Gharami
相关产品推荐
相关产品推荐

