Django中Reverse for ' sign-in'未找到错误排查求助
Django URL反向解析错误:Reverse for ' sign-in' not found 排查方案
问题场景
配置Django项目路由后,在模板中使用{% url 'userauths: sign-in' %}生成登录链接,启动服务时触发错误:
"Reverse for ' sign-in' not found. ' sign-in' is not a valid view function or pattern name."
涉及代码
项目根urls.py
from django.contrib import admin from django.urls import path, include from django.conf import settings from django.conf.urls.static import static urlpatterns = [ path('admin/', admin.site.urls), path("", include("core.urls")), path("user/", include("userauths.urls")) ] if settings.DEBUG: urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
userauths/urls.py
from django.urls import path from userauths import views as auth_views app_name = "userauths" urlpatterns = [ path("sign-up/", auth_views.register_view, name="sign-up"), path("sign-in/", auth_views.login_view, name="sign-in"), path("sign-out/", auth_views.logout_view, name="sign-out"), ]
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Index Page</title> </head> <body> <a href="{% url 'userauths: sign-in' %}">Sign-in</a> </body> </html>
错误根源
模板中的URL反向解析表达式'userauths: sign-in'存在格式错误:冒号:和URL名称sign-in之间多了一个空格。Django会将带前导空格的' sign-in'作为完整名称去匹配路由,但userauths应用中定义的URL名称是无空格的sign-in,导致匹配失败。
修复步骤
修改index.html中的URL标签,去掉冒号后的空格:
<a href="{% url 'userauths:sign-in' %}">Sign-in</a>
重新启动服务后,反向解析即可正确匹配到userauths/urls.py中定义的name="sign-in"路由。
内容的提问来源于stack exchange,提问作者Võ Phú Hữu
相关产品推荐
相关产品推荐

