Python 请教大佬们一个问题,pyhton DRF+VUE 项目,刷新后无法加载 CSS

jackeyhate · June 08, 2022 · Last by jackeyhate replied at June 13, 2022 · 4210 hits

刚打开项目是正常的,登录进入首页后,刷新也正常,但是点了导航条到二级目录后,刷新后变成了白屏,提示 CSS 加载报错。有没有大佬帮忙看看!网上查了半天都没找到解决方案!!!

共收到 6 条回复 时间 点赞

没有代码细节,只能根据报错信息给个排查方向:

报错信息是说这些 css、js 文件,由于请求获取文件时,返回的 mine type 为 text/html ,且开启了严格 mine 检查机制,所以由于这个类型并非有效的 js/css 文件 mine 类型,这个资源被拒绝应用了。

mine type 具体体现为,network 标签里这些文件资源请求的 response header 里的 content-type 。正常 js 应该是 text/javascript ,css 应该是 text/css 。content-type 一般会被 web 服务器自行根据扩展名进行处理,你这里没有正常处理,有可能是你这个服务对静态资源返回的配置有问题,或者放的位置不对,可以根据这个方向排查下。

如果没有思路,麻烦提供更详细的一些项目配置信息,可以的话最好直接把可重现问题的项目最小源码放到 github 仓库,方便其他人帮你查看。

django 访问静态文件要配置权限的,配置了没有,VUE 是用的 2 还是 3,VUE 的打包路径是不 dist\static ,django 只认这个目录

Kevin.zhao 回复

您好,用的 vue2,dist/static 也是对的。
我目前进入首页是正常的,点了导航信息后也是正常。只是此时刷新后才会出现报错。

jackeyhate 回复

看看权限配置好了没有
settings.py 配置

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'vue/dist/static')
UPLOAD_ROOT = os.path.join(BASE_DIR, 'static')

STATICFILES_DIRS = [
    ("css", os.path.join(STATIC_ROOT, 'css')),
    ("img", os.path.join(STATIC_ROOT, 'img')),
    ("js", os.path.join(STATIC_ROOT, 'js')),
    ("upload", os.path.join(UPLOAD_ROOT, 'upload')),
    ("fonts", os.path.join(STATIC_ROOT, 'fonts')),
]

url 配置

re_path(r'^static/(?P<path>.*)$',serve,{'document_root': settings.UPLOAD_ROOT}),
Kevin.zhao 回复

STATICFILES_DIRS 这个还真没配,晚上回去试试,我记得我配置那没那么多,最多就到 dist/STATIC 就没了

陈恒捷 回复

谢大佬指点,回头我试试传到 git 上去

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up