Django访问注册链接出现404页面未找到错误求助
解决Django中访问/accounts/register出现404的问题
下面是针对你代码中问题的逐一修复方案:
1. 根URL配置遗漏自定义注册路由
你的项目根目录urls.py只引入了Django自带的auth路由,没有包含你自己的registration应用路由,导致accounts/register找不到对应匹配项。
修改根目录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('main.urls')), path('news/', include('news.urls')), path('accounts/', include('django.contrib.auth.urls')), path('accounts/', include('registration.urls')), # 添加这一行,引入自定义注册路由 ] urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
2. 注册应用URL路径格式错误
Django的path()函数不需要在路径开头加斜杠,你写的/register会导致路由匹配失败;同时当前路由映射的register视图是空函数,实际注册逻辑在sign_up里。
修改registration/urls.py:
from django.contrib.auth import views as auth_views from django.urls import path from . import views urlpatterns = [ path('register', views.sign_up, name='register'), # 去掉开头斜杠,映射到正确的sign_up视图 ]
3. 视图函数逻辑错误
register()函数没有接收request参数,且不是实际处理注册的函数,直接弃用即可sign_up函数中,表单验证失败时重新创建空表单会丢失用户输入和错误提示,应该保留带错误的表单
修改registration/views.py:
from django.shortcuts import render, redirect from django.contrib.auth import login from .forms import RegistrationForm def sign_up(request): if request.method == 'POST': form = RegistrationForm(request.POST) if form.is_valid(): user = form.save() login(request, user) return redirect('home') # 验证失败直接用当前带错误的form,不重新创建 else: form = RegistrationForm() return render(request, 'registration/register.html', {'form': form})
完成以上修改后,重启Django开发服务器,访问http://127.0.0.1:8000/accounts/register即可正常加载注册页面。
内容的提问来源于stack exchange,提问作者user24993423
相关产品推荐
相关产品推荐

