django项目 404解决方案
下面的命令会让django强制处理静态文件。
python manage.py runserver --insecure
为什么会提示404
我们在下面会详细的分析下原因,让大家有个基本的了解
只使用django
DEBUG=True
在settings.py
中设置DEBUG=True
的时候,Django会自动收集所有app中的静态文件,也就是static中的文件。
然后提供访问,这样如果用到第三方的框架,就不会出现404的问题了。
DEBUG=False
如果关闭debug的时候,Django默认不会收集静态资源了,也不会返回static文件夹的内容,即使访问正确的路径也是返回404。
这时候就需要用到nginx来处理静态文件了。
当然,在关闭debug模式的时候,还有一个命令,可以强制让Django来处理静态文件:
python manage.py runserver --insecure
使用nginx+django
大部分项目都是使用nginx来作为前端服务器,然后将请求转给给Django,静态文件就配置为Django的静态目录。
在默认的情况下,配置了之后,Django可以正常使用和访问静态文件,当用一些第三方框架的时候,如django-simpleui
或者simplepro
,就会出现无法访问这些框架的静态资源文件。
所以这时候我们需要用到Django的克隆静态文件的命令
克隆静态文件
python manage.py collectstatic
当我们执行克隆静态文件的命令之后,并且nginx正确配置Django项目的static文件夹了。我们就可以访问到了。
排查错误
如果用到了nginx,我们先检查nginx的access.log和error.log
如果access.log 里面有404的错误提示,一般是Django没有克隆静态或者Django配置有误。
如果error.log 中有错误信息,提示无法访问文件或者文件夹,一般是Django没有克隆静态或者Django配置有误。 并且
检查目录的权限,linux
或者Windows
以及macOS
这些操作系统中都会文件访问有严格的限制。
如果实在不了解文件夹授权这块,请直接切换为root用户运行nginx,并且给静态资源的目录授权为777
chmod 777 静态目录
在通过以上的步骤之后,还是无法解决静态文件访问的问题,请直接联系我们进行有偿技术支持,200元一次。 QQ:599194993