我正在try 将我的Django应用程序部署到Web,但收到以下错误:

您在使用staticfiles应用程序时没有设置STATIC_ROOT

然而,我在我的production.py岁时做到了:

from django.conf import settings

DEBUG = False
TEMPLATE_DEBUG = True
DATABASES = settings.DATABASES

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')

# Update database configuration with $DATABASE_URL.
import dj_database_url
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)

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

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))

STATIC_URL = '/static/'

# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'),
)

# Simplified static file serving.
# https://warehouse.python.org/project/whitenoise/

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'

推荐答案

production.py号文件是什么?您如何导入您的设置?

根据您是如何得到这个错误的(通过wsgi服务器或在命令行上提供django),判断manage.pywsgi.py以查看默认设置文件的名称.

如果要手动设置要使用的设置,请使用类似以下内容的设置:

./manage.py --settings=production

其中production是任何Python模块.

此外,您的设置文件不应该导入任何与Django相关的内容.如果您想为不同的环境拆分设置,请使用如下所示的设置.

A文件settings/base.py

# All settings common to all environments
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')

settings/local.py,settings/production.py个…这样的文件

# Production settings
from settings.base import *
DEBUG = False
DATABASES = …

Django相关问答推荐

Django中的登录重定向

Django迁移嵌套模型时出错,不带迁移基本模型

在生成的表单元素处出现多值DictKeyError

Urls.py中路径**kwargs的Django翻译?

在 Django 中重组多对多字段

如何连接到 docker 容器中的 postgres 数据库?

Django 表单字段必填和可选配置

在 django HTML 邮箱模板中使用字体

如何在 gunicorn conf 文件中指定 uvicorn 工作人员

超级用户在基于类的视图中进行身份验证

Django中的 联合(Union) 和相交(Intersect)

如果上下文中缺少变量,如何使 Django 模板引发错误

Django 视图 - 首先从调用应用程序的目录加载模板

手动触发 Django 邮件错误报告

Django Admin:如何在同一视图中显示来自两个不同模型的字段?

如何覆盖 django 管理员翻译?

访问 django 管理模板中的对象

Django Debug Toolbar:了解时间面板( time panel)

左加入 Django ORM

如何在 django 模板中呈现有序字典?