解决Django启动时浏览器显示“服务器拒绝访问”的多种排查方案
本文详细解析Django启动时浏览器提示“服务器拒绝访问”的常见原因及解决方案。主要涵盖修改settings.py中的ALLOWED_HOSTS配置、处理Django与SQLite3版本不兼容导致的降级或升级策略、修复base.py中uri参数错误,以及修正Linux系统中/etc/hosts文件导致的本地回环地址解析问题,帮助用户快速恢复服务访问。
该问题耗时较久才得以解决,整理如下旨在帮助遇到相同情况的开发者减少排查时间。
Django启动“服务器拒绝访问”解决方案
当启动Django项目后,浏览器提示“服务器拒绝访问”,可尝试以下几种修复方法。
修改ALLOWED_HOSTS配置
第一种情况:未开启允许访问权限。
请编辑项目目录(例如HelloWorld)下的settings.py文件,找到配置项
将ALLOWED_HOSTS=[]修改为ALLOWED_HOSTS=['*'],其中'*'代表允许任意地址访问。
解决Django与SQLite版本兼容问题
第二种情况:Django版本过高,而SQLite3版本过低。
执行命令python3 manage.py runserver 0.0.0.0:8000时,若出现以下报错:
django.core.exceptions.ImproperlyConfigured: SQLite 3.8.3 or later is required (found 3.7.17)
这通常是因为CentOS系统自带的SQLite3版本过低,而错误提示要求至少为3.8.3版本。解决思路主要有两种:降低Django版本或升级SQLite。
从操作简便性来看,降低Django版本通常更为简单。
首先卸载当前Django:pip3 uninstall django
然后安装指定低版本Django:pip3 install django==2.1.8
修复SQLite3 base.py uri参数错误
第三种情况:SQLite3版本为3.7时的特定报错。
执行python3 manage.py runserver 0.0.0.0:8000时,若出现以下错误:
django.db.utils.Notsupportederror: urls not supported
可通过pip3 show django查看Django的安装路径,进入该路径下的
python3.6/site-packages/django/db/backends/sqlite3/base.py
目录中找到base.py文件并进行编辑。

将配置中的'uri':True修改为'uri':False。
其他排查建议
第四种情况:其他潜在问题。
若上述方法无效,可尝试更换浏览器访问,或检查系统防火墙设置是否拦截了连接。
完成配置后,预期应能正常看到Django的欢迎界面。

补充:hosts文件导致的本地访问拒绝
补充知识:运行Django时出现127.0.0.1:8080服务器拒绝访问的排查。
在使用python manage.py runserver时若出现127.0.0.1:8080服务器拒绝访问,通常是因为修改了hosts文件导致本地解析异常。
此处省略截图展示。
打开终端执行以下命令:
$ sudo gedit /etc/hosts
打开该文件后,内容可能如下所示:
``` 127.0.0.1 localhost 127.0.0.1 Inspiron-5421
The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters```
只需删除包含127.0.0.1 Inspiron-5421的行即可解决问题。操作前建议备份hosts文件,以防误操作后无法恢复原始配置。
以上即为解决Django启动时浏览器显示“服务器拒绝访问”问题的完整方案,供参考使用。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









