Django访问根路径未匹配URL、admin登录异常问题求助
问题原因及解决方案
1. 空路径404报错原因
你当前根目录urls.py中仅配置了admin/、静态资源、媒体资源三类路由,没有配置空路径''对应的匹配规则,因此直接访问网站根地址时Django找不到对应路由就会抛出该报错。
2. 路径修改后admin登录失败原因
- 不要直接修改admin站点的默认挂载路径,
admin.site.urls是Django内置admin后台的完整路由集合,包含了登录、数据管理等所有后台相关的路由,将它挂载到login/路径下属于不合理的混用操作。 - 登录提示账号密码错误,大概率是你还没有创建拥有staff权限的超级管理员账号,或者输入的账号密码有误。
3. 具体修复步骤
3.1 恢复并补充根路由配置
将urls.py恢复为正常配置,同时根据需求补充空路径的路由规则:
from django.contrib import admin from django.urls import path, include from django.shortcuts import redirect # 加这行用来实现重定向 from django.conf import settings from django.conf.urls.static import static urlpatterns = [ path('admin/', admin.site.urls), # 临时方案:访问根路径直接跳转到admin后台 path('', lambda request: redirect('/admin/')), # 正式方案:如果需要使用自己开发的页面,引入对应app的路由,示例如下 # path('', include('profiles.urls')), # path('customers/', include('customers.urls')), ] urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
3.2 确认创建超级管理员账号
执行终端命令创建可登录admin的超级账号,创建过程中按照提示输入用户名、邮箱、密码即可:
python manage.py createsuperuser
创建完成后访问http://你的服务地址/admin/,输入刚才设置的账号密码即可正常登录admin后台。
4. 关于views.py的编写要求
如果仅使用Django内置的admin后台管理数据,不需要额外编写视图,按照上面的步骤操作即可正常使用。
如果你需要开发admin之外的自定义用户页面,就需要编写对应的视图逻辑,常用的视图包括:
- 网站首页视图:用来渲染自定义首页的内容,返回对应的前端模板
- 普通用户登录/登出视图:如果需要面向普通用户开放登录功能,不需要走admin后台的登录逻辑,可以基于Django内置的auth模块定制登录逻辑
- 各业务模块的功能视图:比如客户列表、产品详情、销售报表等对应页面的处理逻辑,分别写在对应app的
views.py中即可
内容的提问来源于stack exchange,提问作者Alex Musaielian
相关产品推荐
相关产品推荐

