QPython 中文文档 下载 App

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 服务。然后你可以:

查看手机 IP:

import subprocess
result = subprocess.run(["ip", "addr", "show", "wlan0"], capture_output=True, text=True)

或者直接从手机设置 → Wi-Fi 里查看。

实际用途

Django:重型框架的轻量用法

Django 是全功能 Web 框架,在手机上跑完整 Django 项目比较重。但 Django 的核心能力(ORM、Admin)仍然可以用:

注意事项

内置 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(MIUI、ColorOS、OneUI)对本地 HTTP 服务有限制——可能不允许同局域网的设备访问。如果 PC 上访问不了手机的 Web 服务,检查手机的防火墙和 Wi-Fi 设置。

小结

QPython 的 Web 开发支持让「手机上跑 Python Web 服务」变成现实。Flask 是首选——轻量、快速、适合移动端。Django 更重,但 ORM 和 Admin 后台能力很强。结合 QSL4A 的硬件能力,可以做出很有意思的东西——比如把手机变成一个简易的 IoT 网关,通过网页查看传感器数据。

接下来看内置浏览器,或者跳到硬件自动化部分。