Django网站无法连接:127.0.0.1拒绝连接,疑为防火墙问题如何解决?
解决Django本地访问127.0.0.1拒绝连接(防火墙相关)
先确认基础前提
- 确保Django开发服务器绑定正确地址:启动时使用命令
python manage.py runserver 127.0.0.1:8000或python manage.py runserver 0.0.0.0:8000,避免绑定到非本地地址。 - 确认服务器正常运行:终端应显示「Starting development server at http://127.0.0.1:8000/」,无启动报错。
分系统处理防火墙问题
Windows系统
- 临时测试(不推荐长期关闭):
打开「控制面板」→「Windows Defender防火墙」→「启用或关闭Windows Defender防火墙」,选择「关闭Windows Defender防火墙」,测试访问是否正常。测试完成后务必重新开启防火墙。 - 添加永久放行规则:
- 进入「Windows Defender防火墙」→「高级设置」
- 在「入站规则」面板点击「新建规则」
- 规则类型选「端口」,点击下一步
- 选择「TCP」,输入Django使用的端口(默认8000),点击下一步
- 选择「允许连接」,点击下一步
- 勾选所有网络类型(根据实际需求调整),点击下一步
- 命名规则(比如「Django开发服务器端口放行」),完成设置
Linux系统(以Ubuntu/Debian为例)
- 临时测试:
执行命令sudo ufw disable关闭防火墙,测试后用sudo ufw enable恢复。 - 添加端口放行规则:
- 执行
sudo ufw allow 8000/tcp(将8000替换为你实际使用的Django端口) - 执行
sudo ufw status验证规则是否已成功添加
- 执行
macOS系统
- 临时测试:
打开「系统设置」→「网络」→「防火墙」,点击「关闭防火墙」测试,完成后重新开启。 - 添加放行规则:
- 打开「系统设置」→「网络」→「防火墙」→「选项」
- 点击「+」按钮,选择运行Django的Python解释器或终端应用,勾选「允许传入连接」后保存
- 也可通过终端放行端口:执行
sudo ipfw add allow tcp from any to any 8000 in(替换8000为实际端口)
额外排查点
- 检查端口是否被占用:
- Windows:执行
netstat -ano | findstr :8000,若有其他进程占用,可杀死进程或换端口启动(python manage.py runserver 8001) - Linux/macOS:执行
lsof -i :8000,查看占用进程并处理
- Windows:执行
内容的提问来源于stack exchange,提问作者Reddest Moon
相关产品推荐
相关产品推荐

