QPython Web 开发——Django 与 Flask 在手机上的运行
内置 Web 框架
QPython 4.0 的科学计算库支持中提到了 Django 和 Flask 两个 Web 开发框架。这意味着你可以在手机上用 Python 搭建简单的 Web 服务——不需要额外安装 Android WebView 组件,Python 的标准 WSGI / ASGI 服务器就能跑。
Flask:轻量 Web 服务的首选
Flask 是轻量级 Web 框架,手机上跑 Flask 的体验比 Django 更顺畅(资源占用小)。
安装 Flask
# 通过 QPYPI 搜索 Flask 并安装
# 或终端里
import subprocess
subprocess.run(["pip", "install", "flask"])
最小 Flask 应用
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello from QPython!"
@app.route("/sensors")
def sensors():
# 结合 QSL4A 返回传感器数据
from androidhelper import Android
droid = Android()
droid.startSensingTimed(1, 500)
import time
time.sleep(1)
events = droid.sensorsGetEventBuffered().result
droid.stopSensing()
return str(events)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
启动服务
在 QPython 终端或 QEditor 里运行这个脚本,Flask 会在 5000 端口启动 HTTP 服务。然后你可以:
- 在手机浏览器里访问
http://localhost:5000 - 在同局域网的电脑上访问
http://<手机IP>:5000
查看手机 IP:
import subprocess
result = subprocess.run(["ip", "addr", "show", "wlan0"], capture_output=True, text=True)
或者直接从手机设置 → Wi-Fi 里查看。
实际用途
- 本机 API 服务:让手机上运行的 Python 脚本提供 API 接口
- 传感器数据网页展示:把传感器数据实时展示在网页上
- 调试辅助:在 PC 浏览器里查看手机脚本输出的数据
Django:重型框架的轻量用法
Django 是全功能 Web 框架,在手机上跑完整 Django 项目比较重。但 Django 的核心能力(ORM、Admin)仍然可以用:
- ORM 数据模型:用 SQLite(Django 默认)存储脚本产生的数据
- Admin 后台:通过 Django Admin 网页查看和管理数据
- API 开发:用 Django REST Framework 构建 REST API
注意事项
- Django 项目初始化(
django-admin startproject)在手机上可以跑,但不方便——目录结构创建和静态文件管理在小屏幕上操作繁琐 - 建议在 PC 上创建好 Django 项目,复制到手机上,再用 QPython 运行
- Django 的 debug 模式要开着,否则静态文件不会自动服务
内置 HTTP 服务器(不用 Flask / Django)
如果只是想快速暴露一个目录或返回一些数据,Python 标准库自带 HTTP 服务器:
import http.server
import socketserver
PORT = 8000
handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer(("", PORT), handler) as httpd:
print(f"Serving at port {PORT}")
httpd.serve_forever()
这会把当前目录下的文件通过 HTTP 暴露出去。虽然简陋,但用来快速分享文件或调试足够了。
权限注意
跑 Web 服务需要确保 QPython 已授予:
- 完全的互联网访问权限
- 更改网络连接性(某些 ROM 需要)
- 如果需要让同局域网的其他设备访问,还需要更改 Wi-Fi 状态(某些 ROM 限制)
某些 ROM(MIUI、ColorOS、OneUI)对本地 HTTP 服务有限制——可能不允许同局域网的设备访问。如果 PC 上访问不了手机的 Web 服务,检查手机的防火墙和 Wi-Fi 设置。
小结
QPython 的 Web 开发支持让「手机上跑 Python Web 服务」变成现实。Flask 是首选——轻量、快速、适合移动端。Django 更重,但 ORM 和 Admin 后台能力很强。结合 QSL4A 的硬件能力,可以做出很有意思的东西——比如把手机变成一个简易的 IoT 网关,通过网页查看传感器数据。
接下来看内置浏览器,或者跳到硬件自动化部分。