Developer 2024 🎇限时优惠进行中,现在购买立即享受

现在购买

Django为什么会提示静态文件404错误?

avatar社区小助手
11月19日1.3k次阅读

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

发布评论
登录后发表内容
0个评论