Django报错NoReverseMatch:'register_request'反向路由解析失败
问题原因
触发NoReverseMatch: Reverse for 'register_request' not found的核心原因是:你在模板、视图中引用的路由名称,和urls.py里实际配置的路由name参数不匹配,同时存在几处跳转逻辑写错的问题,按以下步骤修复即可。
修复步骤
修正导航栏模板的链接错误
现有导航栏代码有三个问题:一是反向解析用的路由名sweet:register_request不存在,二是链接文字是「登录」,却错误指向注册路由,三是注册入口用了硬编码路径不利于后续维护。将导航栏代码替换为:<div class="container py-5"> <p class="text-center">If you already have an account, <a href="{% url 'sweet:login' %}">login</a> instead.</p> </div> <div class="container py-5"> <p class="text-center">Don't have an account? <a href="{% url 'sweet:register' %}">Create an account</a>.</p> </div>修正注册视图的跳转逻辑
现有register_request视图中,注册成功后跳转用的redirect('login_request')找不到对应路由,将该行改为:return redirect('sweet:login')修正登录视图的跳转逻辑
现有login_request视图中,登录成功后跳转写的是redirect("base.html"),这是模板文件名不是合法路由,首页对应的路由别名是allProdCat,将该行改为:return redirect("sweet:allProdCat")
路由对应关系核对
修复后可对照下表确认所有路由引用正确,避免再出现同类报错:
| 绑定视图 | 访问路径 | 完整路由别名(含命名空间) |
|---|---|---|
| views.allProdCat | / | sweet:allProdCat |
| views.register_request | /register/ | sweet:register |
| views.login_request | /login/ | sweet:login |
注:你的
urls.py中存在冗余导入(重复导入auth_views、导入了未使用的LogoutView/LoginView),不影响功能运行,可自行删除保持代码整洁。
内容的提问来源于stack exchange,提问作者AMALA RAJAN
相关产品推荐
相关产品推荐

