我使用Docker Compose,结合这个Dockerfile将static文件夹复制到/static目录下:
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install --upgrade pip && pip install -r requirements.txt
COPY static /static/
COPY . /code/
在我的设置文件中,我使用:
if env == "dev":
DEBUG = True
else:
DEBUG = False
SECURE_CONTENT_TYPE_NOSNIFF = True
SECURE_BROWSER_XSS_FILTER = True
X_FRAME_OPTIONS = "DENY"
STATICFILES_FINDERS = [
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
STATICFILES_DIRS = [
# os.path.join(BASE_DIR, "static/"),
'/static'
]
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
在开发环境下静态文件能正常工作,但当我将环境切换到生产环境时,出现了404错误。
您看到问题了吗?
STATICFILES_DIRS
是您的静态文件在代码仓库内的位置,Django 应该从中获取它们以进行collectstatic
。因此,该设置是错误的,它不应该是/static
(通常,如果在应用程序的“静态”文件夹中,则根本不需要设置此项)。同时请向我们展示您的 Apache/Nginx 配置。 - dirkgroten