首页 > 解决方案 > 当 DEBUG 设置为 False 时,Django 不提供媒体文件

问题描述

DEBUG = False.

这是我的代码

DEBUG = False
STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'static', 'media')

我已经尝试了几件事,但都没有奏效。
如果您知道我的问题的答案,请帮助我!

标签: pythondjangodjango-staticfilesdjango-settings

解决方案


我最近有一个类似的问题。

在开发中,Django 开发服务器提供Django 文档中记录的静态文件。如果settings.DEBUGFalse,则由开发服务器提供的静态文件停止。请参阅此 Stack Overflow 帖子:为什么 DEBUG=False 设置使我的 django 静态文件访问失败?

除了这些配置步骤之外,您还需要实际提供静态文件。

在开发过程中,如果您使用 django.contrib.staticfiles,这将在 DEBUG 设置为 True 时由 runserver 自动完成(参见 django.contrib.staticfiles.views.serve())。

这种方法效率极低并且可能不安全,因此不适合生产。

对于生产,有提供静态文件的选项,如此处所述

我解决了在生产环境中在Dokku实例上提供静态文件的问题——你见过的最小的 PaaS 实现——它类似于 Heroku。

我使用了一个名为Whitenoise的包,在这篇博文中进行了讨论。

我发现 Whitenoise 是为小型 Django 应用程序提供静态文件的最简单解决方案,而无需配置单独的静态文件服务器。


推荐阅读