前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >解决django部署后静态文件404问题

解决django部署后静态文件404问题

作者头像
kirin
发布2020-05-09 15:54:14
6.2K0
发布2020-05-09 15:54:14
举报
文章被收录于专栏:Kirin博客Kirin博客

用过django的内置服务器127.0.0.1:8000都知道,如果debug=False的时候那么django就不会自己去寻找静态文件了,

那么这个时候就需要自己去设置静态文件的路径,为此,我踩过不少坑,这篇文章能够很好的解决这个问题

我部署的环境是centos7.6 + django + uwsgi + nginx 详情请参考此博客下部署文章

在nginx中设置好静态文件路径,用绝对路径指向静态文件static即可,media同理

location /static{

alias /data/wwwroot/project/static;

}

正文开始

如果你的项目部署后所有的静态文件都出现了404,那么你应该检查一下,你的setting中是否有设置

因为线上环境是不可能开启debug的,总结就是开启debug关了之后就不会django就不会自己找静态文件了

所以,只需要自己设置好路由,让django去按照指定的路由去找静态文件就完美的解决了

DEBUG=False

# STATICFILES_DIRS=[os.path.join(BASE_DIR,’static’)] 这句是需要注释的

STATIC_ROOT=os.path.join(BASE_DIR,’static’)  #用于处理静态文件

MEDIA_ROOT=os.path.join(BASE_DIR,’media’) # 用于处理上传的文件

setting中做好了这三部之后

开始在url.py中设置

首先导入

from django.conf.static import serve

from django.conf import settings

from django.urls import re_path # 因为需要用到正则匹配所以导入它

接着在路由中添加

urlpatterns=[

re_path(‘^stiaic/(?P<path>.*)’,serve,{‘document_root’:settings.STATIC_ROOT}), # 用于处理static里的文件

re_path(‘^media/(?P<path>.*)’,serve,{‘document_root’:settings.MEDIA_ROOT}), # 用于处理上传的文件

]

然后在执行静态文件收集

python manage.py collectstatic  # 收集全部静态文件到STATIC_URL定义的路径内

然后重启你的uwsgi和nginx看看效果吧

这样就可以解决关了debug后静态文件丢失的问题,踩了n多坑之后总结出来的经验,分享给你们!

祝你们好运。(如果还没有成功,多试几次)

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档