PostgreSQL集成Django后开发服务器无法访问(连接被拒绝)
排查步骤与解决方案
1. 确认Django开发服务器是否成功启动
启动服务器后,查看终端输出:
- 正常启动会显示类似
Starting development server at http://127.0.0.1:8000/的信息。 - 如果终端有报错(比如数据库连接失败、权限错误),优先解决这些错误——服务器可能根本没正常启动,自然无法访问。
2. 检查PostgreSQL服务状态
PostgreSQL未运行会导致Django启动失败:
- 查看状态:
sudo systemctl status postgresql - 若未运行,启动服务:
sudo systemctl start postgresql - 设置开机自启:
sudo systemctl enable postgresql
3. 测试PostgreSQL本地连接
直接验证数据库本身是否可访问,排除Django层面的问题:
- 执行命令:
psql -U 你的数据库用户名 -d 你的数据库名称 - 若连接失败,说明数据库配置存在问题(比如用户不存在、密码错误、数据库未创建),先修复PostgreSQL的本地连接问题。
4. 检查8000端口是否被占用
其他程序占用8000端口会导致Django无法绑定:
- 查看端口占用:
sudo lsof -i :8000或sudo netstat -tulpn | grep 8000 - 若有占用进程,要么终止该进程,要么换端口启动Django:
python manage.py runserver 8001
5. 验证防火墙规则生效
确认8000和5432端口的防火墙规则已正确添加:
- 查看当前规则:
sudo ufw status verbose - 确保输出中包含:
8000/tcp ALLOW IN Anywhere 5432/tcp ALLOW IN Anywhere - 若规则缺失,重新添加:
sudo ufw allow 8000/tcp sudo ufw allow 5432/tcp sudo ufw reload
6. 检查Django的ALLOWED_HOSTS配置
虽然DEBUG模式下127.0.0.1默认允许,但仍需确认:
- 打开
settings.py,确保ALLOWED_HOSTS包含本地地址:ALLOWED_HOSTS = ['127.0.0.1', 'localhost']
7. 尝试直接用curl测试本地连接
在终端执行:curl http://127.0.0.1:8000
- 若返回Django默认页面的HTML内容,说明服务器正常,问题可能出在浏览器设置(比如代理、缓存);
- 若仍提示连接拒绝,回到第一步检查服务器启动日志。
内容的提问来源于stack exchange,提问作者Allison
相关产品推荐
相关产品推荐

