在开发Flask应用时,默认的内置开发服务器只能在本地(localhost,即127.0.0.1)访问——这意味着你只能在自己的电脑上打开应用,同一局域网内的手机、平板或其他电脑都无法连接。但实际开发中,我们常需要在不同设备上测试应用(比如看手机端适配效果),或是给同事演示进度。今天就用两种简单方法,教你配置Flask应用,让它在局域网内“开放访问”,全程无需复杂网络知识,新手也能快速上手。
一、先搞懂:为什么默认无法局域网访问?
Flask的内置开发服务器默认绑定“localhost(127.0.0.1)”,这是出于安全考虑——开发模式下开启的调试功能(如代码自动重载、错误详情页)存在风险,若直接开放到网络,可能被局域网内其他设备执行恶意代码。
要实现局域网访问,核心是将服务器绑定的IP从“127.0.0.1”改为“0.0.0.0”。“0.0.0.0”不是具体的IP地址,而是表示“监听当前设备所有可用的网络接口”——无论是有线网卡、无线网卡的IP,其他设备只要在同一局域网,就能通过这些IP访问应用。
二、前提准备:确认两件事
在开始配置前,先完成两个基础检查,避免后续踩坑:
- 确保设备在同一局域网:所有要访问Flask应用的设备(如手机、另一台电脑),需连接同一个WiFi或通过网线接入同一路由器(比如电脑连WiFi,手机也连同一个WiFi)。
- 记录开发机的IPv4地址:后续其他设备访问时,需要用这个IP。
查看IPv4地址的方法(以Linux系统为例):
打开终端,输入以下命令,找到“inet”开头的地址(如192.168.1.105,不是127.0.0.1):
(Windows系统可通过“cmd→ipconfig”查看,macOS通过“终端→ifconfig”查看)。ip addr show
三、方法1:用flask run命令直接配置(适合命令行启动)
如果平时习惯用flask run命令启动应用(比如通过设置FLASK_APP环境变量指定入口文件),只需在命令后加--host=0.0.0.0参数,即可让应用局域网可见。
操作步骤:
- 进入项目目录:打开终端,用
cd命令切换到Flask项目所在文件夹(比如项目在/home/user/my_flask_app):cd /home/user/my_flask_app - 设置Flask入口文件(可选):若未配置过
FLASK_APP环境变量,需先指定入口文件(假设入口文件是app.py):
(若需要开启调试模式,可再执行export FLASK_APP=app.pyexport FLASK_DEBUG=True,但注意:调试模式仅用于开发,正式环境必须关闭)。 - 启动应用并指定host:执行以下命令,让服务器监听所有网络接口:
启动成功后,终端会显示类似以下信息,说明已绑定0.0.0.0,端口默认是5000:flask run --host=0.0.0.0* Serving Flask app 'app.py' * Debug mode: on * Running on all addresses (0.0.0.0) Running on http://192.168.1.105:5000 Running on http://127.0.0.1:5000
其他设备访问方式:
在同一局域网的设备上打开浏览器,输入“开发机IPv4地址:端口号”,比如:
http://192.168.1.105:5000
就能看到Flask应用的界面了(若端口不是5000,需替换成实际端口,比如http://192.168.1.105:8080)。
四、方法2:修改app.run()代码(适合python app.py启动)
如果习惯用python app.py命令启动应用(即入口文件中通过app.run()启动服务器),只需在app.run()中添加host='0.0.0.0'参数,无需每次输命令时加参数,更适合长期使用。
操作步骤:
- 打开入口文件:用文本编辑器(如nano、VS Code)打开Flask入口文件(通常是
app.py或wsgi.py)。 - 修改
app.run()方法:找到if __name__ == '__main__':代码块,在app.run()中添加host='0.0.0.0',示例如下:from flask import Flask app = Flask(__name__) # 示例路由 @app.route('/') def hello(): return "Hello, 局域网访问成功!" if __name__ == '__main__': # host='0.0.0.0' 允许局域网访问,port指定端口(默认5000) # debug=True 开启调试模式(开发用,正式环境删除) app.run(debug=True, port=5000, host='0.0.0.0') - 启动应用:在终端进入项目目录,执行以下命令启动应用:
启动成功后,终端会显示与方法1类似的信息,提示“Running on http://192.168.1.105:5000”。python app.py
其他设备访问方式:
和方法1一致,在其他设备浏览器输入“开发机IPv4地址:端口号”即可访问,比如http://192.168.1.105:5000。
五、常见问题:访问失败怎么办?
如果其他设备无法访问,可按以下步骤排查:
- 检查IP是否正确:确认输入的IPv4地址是开发机的局域网IP(不是公网IP),可重新执行
ip addr show核对。 - 检查端口是否冲突:若终端提示“Address already in use”,说明5000端口被占用,可修改
port参数(比如port=8080),访问时用新端口(如http://192.168.1.105:8080)。 - 关闭防火墙(临时测试):Linux系统默认防火墙可能拦截端口,可临时关闭防火墙测试(测试后建议重新开启):
若关闭后能访问,说明是防火墙拦截,可通过以下命令开放指定端口(比如开放5000端口),无需长期关闭防火墙:# Ubuntu/Debian系统关闭防火墙 sudo ufw disable # CentOS/Rocky Linux系统关闭防火墙 sudo systemctl stop firewalld# Ubuntu/Debian开放5000端口 sudo ufw allow 5000 # CentOS/Rocky Linux开放5000端口 sudo firewall-cmd --add-port=5000/tcp --permanent sudo firewall-cmd --reload
六、重要提醒:开发服务器不适合正式环境
需要特别注意:Flask内置的开发服务器仅用于本地开发和测试,它的性能差、安全性低,无法应对多用户并发访问。如果要将应用部署到互联网(让外网用户访问),必须使用专业的WSGI服务器(如Gunicorn、uWSGI)搭配Nginx,具体部署方案可参考Flask官方文档或后续的部署教程。
通过以上两种方法,你已经能轻松让Flask应用在局域网内被其他设备访问——无论是测试手机端适配,还是和同事协作开发,都能更高效。记住核心逻辑:绑定0.0.0.0监听所有网络接口,用开发机的局域网IP+端口访问,遇到问题先排查IP、端口和防火墙。
















