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

Django媒体文件配置后出现404页面未找到问题求助

提问

我正遵循Django 4.1官方文档配置静态文件与媒体文件,使用全新Django环境添加media文件夹。已修改项目根目录下的urls.py和settings.py,配置内容如下:

settings.py

STATIC_URL = 'static/'
MEDIA_URL = 'media/'

MEDIA_ROOT = BASE_DIR / "media"

STATICFILES_DIRS = [
    BASE_DIR / "static",
]

urls.py

urlpatterns = [
    path('admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

但访问http://127.0.0.1:8000/时出现404错误,提示空路径未匹配任何URL模式。我还尝试将'django.template.context_processors.media'添加到TEMPLATES中,以及改用os路径配置,但问题依旧,请问这可能是什么原因?


解决方案

你的问题和静态/媒体文件配置无关,核心是根路径(/)没有对应的URL路由。当前urlpatterns里仅配置了admin/路径,Django找不到匹配/的视图逻辑,因此返回404。

解决步骤

  1. 创建首页视图(将your_app替换为项目中实际的应用名称):
    在your_app/views.py中添加:
from django.shortcuts import render

def home(request):
    return render(request, 'home.html')  # 需在templates目录下创建对应的home.html模板文件
  1. 添加根路径路由:
    修改项目根目录下的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 your_app.views import home

urlpatterns = [
    path('', home, name='home'),  # 新增根路径路由
    path('admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
  1. 快速测试替代方案:
    若不需要模板,仅需验证路由生效,可直接用匿名函数返回简单响应:
from django.contrib import admin
from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from django.http import HttpResponse

urlpatterns = [
    path('', lambda request: HttpResponse('首页已正常访问')),
    path('admin/', admin.site.urls),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

补充说明

你之前调整的django.template.context_processors.media和os路径配置,是用于在模板中正确引用媒体文件的,和根路径404问题无关。当前你的静态/媒体文件配置在开发环境下是有效的,无需修改。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:40:29