为什么Django提供静态文件时使用了错误的MIME类型?
问题原因
Django在DEBUG = False时默认不会处理静态资源请求,执行collectstatic只是将admin后台、第三方应用及项目内的所有静态资源汇总到了STATIC_ROOT配置的目录下,但缺少对应的静态资源服务规则,因此浏览器无法正常加载admin页面的样式文件,导致页面显示异常。
解决方法
方法1:本地临时调试使用
启动服务时添加--insecure参数,强制Django在非调试模式下提供静态资源服务:
python manage.py runserver --insecure
注意:该方法仅适用于本地测试场景,不可用于生产环境。
方法2:配置项目路由适配静态资源访问
修改项目根目录下的urls.py文件,添加静态资源路由规则:
from django.contrib import admin from django.urls import path # 导入以下两个依赖 from django.conf import settings from django.conf.urls.static import static urlpatterns = [ path('admin/', admin.site.urls), # 其余你的项目路由 ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
同时确认settings.py中存在STATIC_URL配置(默认值如下,无需修改即可使用):
STATIC_URL = '/static/'
方法3:生产环境标准方案
生产环境部署时,使用Nginx、Apache等Web服务器托管STATIC_ROOT对应的静态资源目录,将所有/static/开头的请求直接指向你配置的static文件夹即可,该方案性能和安全性更高,是生产环境的推荐用法。
内容的提问来源于stack exchange,提问作者Menas
相关产品推荐
相关产品推荐

