You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Admin面板未显示:404错误问题排查与解决求助

问题分析与解决:Django Admin面板404错误

问题原因

从错误日志能看到,访问/admin时,请求没匹配到你定义的path('admin/', admin.site.urls)路由,反而被static()函数生成的通配路由^(?P<path>.*)$捕获,导致Django试图去本地文件系统查找E:\Masud Ahmad\Pyhood\MyBlogs\blogone\admin这个静态文件路径,自然会返回404。

核心问题是settings.py里的MEDIA_URL配置错误:如果MEDIA_URL被设为空字符串('')或根路径('/'),static()函数会添加一个捕获所有路径的路由,而Django的URL匹配是按顺序执行的,这个通配路由会覆盖前面的admin/路由。

解决方法

  1. 修正MEDIA_URL配置
    打开项目的settings.py,确保MEDIA_URL设置为带前缀的路径,示例:
    MEDIA_URL = '/media/'
    
    同时确认MEDIA_ROOT指向正确的本地目录,示例:
    import os
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    
  2. 重启Django服务
    修改配置后,关闭当前的runserver进程,重新启动服务,确保新配置生效。
  3. 确认路由顺序
    你的urls.py中admin/路由在static()之前,这个顺序是正确的,只要MEDIA_URL配置无误,就不会出现通配路由覆盖的问题。

用户提供的错误信息

Page not found (404)

“E:\Masud Ahmad\Pyhood\MyBlogs\blogone\admin” does not exist
Request Method: GET
Request URL: http://127.0.0.1:8000/admin
Raised by: django.views.static.serve
Using the URLconf defined in blogone.urls, Django tried these URL patterns, in this order:

admin/
base/ [name='base']
[name='home']

^(?P.*)$
The current path, admin, matched the last one.

用户提供的urls.py代码

from django.contrib import admin
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from . import views


urlpatterns = [
    path('admin/', admin.site.urls),
    path('base/', views.BASE, name='base'),
    path('', views.INDEX, name='home'),
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)

内容的提问来源于stack exchange,提问作者Masud Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:00:03