Django关闭Debug模式后正确加载Media与Static文件的配置方法

林见深
林见深
发布时间:2026-10-13 | 4人浏览过
原创

本文详解Django在关闭Debug模式后如何正确配置并加载Static和Media静态文件。通过修改url.py路由、设置STATIC_ROOT与MEDIA_ROOT,以及合理使用django.contrib.staticfiles,解决生产环境中图片、CSS及JS无法访问的问题,适用于中小型及大型多App项目。

Django静态文件配置背景

在开发阶段,通常保持Debug模式开启,以便快速定位和排查代码中出现的各类问题。

关闭Debug后的路由配置

当项目进入部署阶段时,需要关闭Debug模式。此时,若需正确访问静态文件和图片,必须在url.py中配置相应的路由规则。


# url.py
from django.views import static
from django.conf import settings
#路由静态文件和图片
urlpatterns = [
 url(r'^static/(?P<path>.*)$', static.serve, {'document_root': settings.STATIC_ROOT}, name='media')
 url(r'^media/(?P<path>.*)$', static.serve, {'document_root': settings.MEDIA_ROOT}, name='media')
]

Static与Media目录的区别

补充知识:理解Django如何获取静态资源,以及对static和media目录设置的一些思考。

Static文件的正确获取方式

如果直接尝试获取静态资源文件,Django会报错,无法直接访问。

需要添加静态资源文件夹static,并在配置文件中设置静态文件的根目录。


INSTALLED_APPS = [
 ...
 'django.contrib.staticfiles',
 ...
]

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/

STATIC_URL = '/static/'
# 可收集静态文件到static文件夹,便于访问
STATICFILES_DIRS = [
 os.path.join(BASE_DIR, 'static')
]

完成上述配置后,即可通过特定代码调用静态资源,包括图片、CSS和JS文件。


{% load static %}

...
...
<img class="author_img rounded-circle" src="{% static 'image/blog/author.png' %}" alt="" >

Media文件的配置与调用

然而,上传到media目录中的文件可以不通过上述静态文件的方式调用,但前提是必须在配置文件中设置media文件的根路径和根目录。

MEDIA_URL = '/media/' # 访问文件的url根路径 MEDIA_ROOT = os.path.join(BASE_DIR, 'media') # 上传文件存储根目录

配置完成后,可以通过如下方法调用media文件。

<img class="img-fluid" src="/media/{{ detop_view.cover_photo }} " alt="post">

注意这里资源引用没有使用{% static ... %}标签。实际上,只要在settings.py文件中正确配置了相关路径和目录,就可以直接通过URL方式引用这些文件。

大型项目的静态文件管理策略

如果所有静态文件都采用这种方法引用,对于小项目而言并非问题,你可以将静态文件放置在Web服务器能够访问到的任何位置。但对于大型项目,尤其是包含多个App的项目,处理由各个App带来的多套不同静态文件会变得非常繁琐。这正是django.contrib.staticfiles模块的作用:它负责收集每个应用(以及任何你指定的地方)的静态文件到一个统一的指定位置,从而简化访问管理。

media目录通常用于存放用户上传的文件。在将Django项目部署到服务器时,会执行python manage.py collectstatic命令来收集静态资源文件。因此,media目录与static目录并不冲突,且media中的文件可能会被删除或更新。所以,后期用户上传的文件不应放在static目录下,而应放在media目录下。

以上即为大家分享的Django关闭Debug模式后如何正确加载media图片与static静态文件的完整内容,希望能对大家有所帮助。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表