如果这个问题发生在本地,那么只需更改您的 settings.py
DEBUG = True
#...
#...
STATIC_ROOT = YOUR_STATIC_ROOT_DIRECTORY
然后运行 collectstatic,确保您有一个正确的 STATIC_ROOT 目录,该目录也在您的 settings.py 文件中
python manage.py collectstatic
如果您已经在生产服务器上部署了您的应用程序,那么您必须遵循某些事项才能获取样式表和 javascript 文件。
首先
在您的urls.py 中,您需要添加此代码
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + \
static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
然后您必须使用第三方媒体文件服务器(CDN),例如 AWS S3,或者您可以从您的 Django 服务器提供您的 css、js 或媒体文件
如果您不想使用 AWS S3,那么您可以使用您的 django 应用程序发送 css/js(这并不理想),或者您可以使用 nginx 或 apachee 发送您的 css/js
为 Nginx 发送 js/css
您必须添加一个可以被您的 django 应用程序访问的静态和媒体文件根目录,我通常使用 /var/www/ 来提供来自任何 Linux 服务器的静态和媒体文件
STATIC_ROOT = '/var/www/static'
MEDIA_ROOT = 'var/www/media'
那么如果你使用的是 nginx
server {
server_name domainname.com;
access_log off;
location /static/ {
root /var/www/static;
}
location /media/ {
root /var/www/media;
}
如果仍然无法正常工作,那么您的 django 应用可能无法使用给定的 static_root 和媒体目录,请确保您的应用可以访问它们
如果你想从你的 django 应用发送你的 js/css(最好不要在生产环境中做)
那么
安装whitenoise
pip install whitenoise
在您的设置文件中
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
# ...
]