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

如何在Django项目中同时配置静态与媒体文件及修改urls.py

Django同时配置静态文件与媒体文件的方法

能不能同时用?

完全没问题,Django本身就支持同时配置静态文件(Static Files)和媒体文件(Media Files),二者各司其职:

  • 静态文件:存放项目里的固定资源,比如CSS、JS、通用图标这类开发者提前准备好的文件
  • 媒体文件:存储用户上传的动态内容,比如头像、上传的文档、图片这类内容

先修正你settings.py里的错误

你当前的STATICFILES_DIRS配置有两处问题:引号未闭合,且格式不符合要求(需要是列表形式)。修正后的代码如下:

原错误代码:

STATICFILES_DIRS = BASE_DIR / 'static/

修正后:

STATICFILES_DIRS = [BASE_DIR / 'static']

顺带说明下几个配置的作用:

  • STATIC_ROOT:执行collectstatic命令时,收集所有app静态文件的目标文件夹,一般仅在生产环境使用
  • STATICFILES_DIRS:告诉Django,除了各个app自身的static目录外,还要从这个指定目录查找静态资源,开发环境常用

修改urls.py的配置

开发环境下,你只需要在现有代码基础上,添加静态文件的URL映射即可,逻辑和媒体文件的配置一致。修改后的完整代码:

from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('pages.urls')),
    path('users/', include('users.urls')),
    path('users/', include('django.contrib.auth.urls')),
] 

# 仅在开发环境(DEBUG=True)下添加静态和媒体文件的URL映射
if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

为啥加if settings.DEBUG:判断?

因为生产环境中,通常由Nginx、Apache这类Web服务器直接处理静态和媒体文件,不需要Django来承担这个工作,这样能大幅提升服务性能。

验证配置是否生效

  • 静态文件:在static文件夹中放入一张test.jpg,访问http://localhost:8000/static/test.jpg能正常显示即配置成功
  • 媒体文件:上传一个文件后,访问对应的media/路径下的文件,能正常打开即说明配置没问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:35:24