我有一个 django 项目,在开发模式下 css 加载得很好但在生产中没有。
在我的 settings.py 文件中,我设置了这些 trhee 变量
STATIC_ROOT = BASE_DIR / 'staticfiles/'
STATIC_URL = 'static/'
STATICFILES_DIRS = [BASE_DIR / 'static',]
我也设置了
DEBUG = False
当我运行 python manage.py collectstatic 命令时,staticfiles 文件夹会正确接收文件。我在项目的根目录中创建了一个静态文件夹以在那里安装引导程序,同样,在开发中运行得很好。我正在通过 XAMPP 使用 Apache 服务器,因为我在 Windows 上。接下来是项目的配置:
LoadFile "C:/Python310/python310.dll"
LoadModule wsgi_module "C:/Users/life/.virtualenvs/outgoing-qJCH8A9k/lib/site-packages/mod_wsgi/server/mod_wsgi.cp310-win_amd64.pyd"
WSGIPythonHome "C:/Users/life/.virtualenvs/outgoing-qJCH8A9k"
WSGIScriptAlias /outgoing "D:/DEV/PYTHON/GASTOS/software/outgoing/project/wsgi.py" application-group=%{GLOBAL}
WSGIPythonPath "D:/DEV/PYTHON/GASTOS/software/outgoing"
<Directory "D:/DEV/PYTHON/GASTOS/software/outgoing/project">
<Files wsgi.py>
Require all granted
</Files>
</Directory>
Alias /static/ "D:/DEV/PYTHON/GASTOS/software/outgoing/staticfiles/"
<Directory "D:/DEV/PYTHON/GASTOS/software/outgoing/staticfiles">
Require all granted
</Directory>`
重点是,应用程序加载良好但没有引导 css 和 javascript 文件。浏览器控制台也告诉这个。
Refused to apply style from 'http://localhost/outgoing/static/node_modules/bootstrap/dist/css/bootstrap.min.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.
GET http://localhost/outgoing/static/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js
请帮忙
对于
DEBUG=False
,预计静态文件夹将位于外部资源上,因为这会给站点带来漏洞。
如果您在生产环境中,建议使用 Django 的 WhiteNoise 库,这是直接在生产环境中提供静态文件/资产的最简单方法之一。
pip install whitenoise
在你的settings.py中
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
......,
]
#
STATIC_ROOT = BASE_DIR / 'staticfiles'
STATIC_URL = '/static/'
#
可选地,您可以在提供静态文件时减小它们的大小(这样效率更高)。只需将以下内容添加到 settings.py 的底部:
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
根据您的生产服务器,您可以通过以下方式收集静态信息:
python manage.py collectstatic