Django项目部署上线解决样式丢失的问题

2022年4月2日 23:44 ry 687

有时候Django项目写好了服务器部署,突然发现一些静态文件无法访问404的情况,这时候就设计一些settings的问题了,对于我们本地运行django,默认debug=True,这是静态文件从static_dir中访问,而当我们部署上线时,一般设置debug=False,这时就是生产环境了,静态文件访问的接口不会从static_dir中走了,而会从总静态路径static_root中寻找,因此会导致上线后访问静态文件出现404情况,如图设置

STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static')
]

上线后改为

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

然后使用命令

python manage.py collectstatic

收集静态文件即可,就是讲所有的静态文件拷贝到static_root目录下。那么django_url是干什么的呢,这个是提供与浏览器进行访问的一个途径,这里注意的是,如果这样

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,'static')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static')
]

是会报错的,因为static_root和static_dirs路径不能一样,最好的办法就是这样写

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR,'mystatic')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR,'static')
]

同样的,如果你这样设置,那么如果用nginx部署的话得加上mystatic,为了放在重复,一般上线时我喜欢直接只用static_root,执行静态文件收集后即可访问,基本不会存在访问不到的情况

如果上述代码帮助您很多,可以打赏下以减少服务器的开支吗,万分感谢!

欢迎发表评论~

点击此处登录后即可评论


评论列表
暂时还没有任何评论哦...

赣ICP备2021001574号-1

赣公网安备 36092402000079号