如何在安卓手机上访问Linux Mint本地Django开发服务器?
解决Django开发服务器无法被同局域网安卓设备访问的问题
问题背景
- 本地使用Django开发网站,通过
python manage.py runserver启动开发服务器,仅能在localhost(http://127.0.0.1:8000/)访问 - 笔记本为Linux Mint系统,与安卓手机连接同一WiFi,查到笔记本WLAN IP为192.168.0.104,但访问
192.168.0.104:8000时,笔记本和手机均提示连接被拒绝 - 禁用Linux防火墙后问题依旧,手机直接访问笔记本IP时能看到Apache默认页
解决思路
1. 修改Django开发服务器绑定地址
默认runserver仅绑定127.0.0.1,仅本地可访问。要允许局域网设备访问,需绑定到所有网络接口或指定局域网IP:
- 绑定所有接口:执行
python manage.py runserver 0.0.0.0:8000 - 绑定指定局域网IP:执行
python manage.py runserver 192.168.0.104:8000
2. 更新Django的ALLOWED_HOSTS配置
Django会拒绝不在ALLOWED_HOSTS列表中的请求,需在项目的settings.py中添加笔记本局域网IP:
ALLOWED_HOSTS = ['192.168.0.104', 'localhost', '127.0.0.1'] # 开发环境可临时使用通配符简化配置:ALLOWED_HOSTS = ['*']
修改后重启开发服务器生效。
3. 再次确认防火墙规则
即使已禁用防火墙,仍需验证8000端口是否被允许:
- 查看防火墙状态:
sudo ufw status - 若防火墙处于激活状态,允许8000端口:
sudo ufw allow 8000/tcp - 重启防火墙:
sudo ufw reload - 可临时关闭防火墙测试:
sudo ufw disable
4. 排查端口冲突
检查8000端口是否被其他程序占用:
- 查看端口占用:
sudo lsof -i :8000或sudo netstat -tulpn | grep 8000 - 若端口被占用,可杀掉对应进程,或换端口启动Django:
python manage.py runserver 0.0.0.0:8080,随后访问192.168.0.104:8080
5. 验证局域网连通性
- 用
ip a命令重新确认笔记本的WLAN IP(替代ifconfig,更适配新Linux系统) - 在笔记本上ping手机的局域网IP,或在手机端用终端工具ping笔记本IP,确认两者可互通
6. 路由器设置排查(最后尝试)
- 部分路由器的AP隔离/客户端隔离功能会阻止同WiFi设备互访,进入路由器管理后台(通常为
192.168.0.1或192.168.1.1),关闭该功能 - 确认路由器未拦截8000端口的数据包
内容的提问来源于stack exchange,提问作者Michael Romanov
相关产品推荐
相关产品推荐

