Django项目中'accounts/register'路径出现Page not found (404)错误的问题排查
解决Django中register页面404的问题
嘿,我一眼就揪出问题根源啦!你在导航栏的register链接里误用了{% static %}模板标签——这个标签是用来加载CSS、图片、JS这类静态资源的,可不是用来生成页面路由的!这就导致点击后浏览器跳转到了/static/accounts/register,而你的实际路由是/accounts/register,自然就出现404错误了。
下面是具体的修复步骤:
1. 修复index.html中的register链接
把导航栏里的错误链接替换成正确的路由写法,推荐用Django的URL反向解析(比硬编码路径更灵活,后续改路由不用改模板):
<!-- 原来错误的写法 --> <li> <a href="{% static 'accounts/register' %}">register</a> </li> <!-- 替换成下面两种方式之一 --> <!-- 方式1:硬编码路由路径 --> <li> <a href="/accounts/register">register</a> </li> <!-- 方式2:推荐用URL反向解析(更优雅) --> <li> <a href="{% url 'register' %}">register</a> </li>
2. 确保项目根urls.py正确包含accounts的路由
如果用反向解析,得先确保项目根目录下的urls.py已经把accounts应用的路由包含进去了,代码应该像这样:
from django.contrib import admin from django.urls import path, include from propython.views import index urlpatterns = [ path('admin/', admin.site.urls), path('', index, name='index'), # 首页路由 path('accounts/', include('accounts.urls')), # 包含accounts的URL配置 ]
3. 顺便修复register.html中的表单提交路径
你的register页面表单里的action="register"也有问题,提交后会跳转到/accounts/register/register,同样会导致错误,改成下面的写法:
<!-- 原来的错误写法 --> <form action="register" method="POST"> <!-- 替换成以下两种方式之一 --> <!-- 方式1:用反向解析指向register视图 --> <form action="{% url 'register' %}" method="POST"> <!-- 方式2:空action,提交到当前页面的URL(更简洁) --> <form action="" method="POST">
做完这些修改后,重启Django服务,再点击register链接就能正常访问注册页面啦!
内容的提问来源于stack exchange,提问作者Dtheekshana
相关产品推荐
相关产品推荐

