有时候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,执行静态文件收集后即可访问,基本不会存在访问不到的情况
点击此处登录后即可评论