447 字
2 分钟
Python Flask的基础使用
1. Hello world
# flask Hello worldfrom flask import Flask,request
app = Flask('app')
@app.route('/') # @app.get('/')def main(): return 'Hello World!'
@app.route('/<name>')def hello(name): if age := request.args.get('age'): return 'Hello {}, 你{}岁!'.format(name, age) return "请求参数错误"
app.run(debug=True, port=9999, host="0.0.0.0")如果需要外部访问,需要将 host 设置为 0.0.0.0 。
2. 获取全部参数
DAY 213 Flask 1.1.2:request中存储参数的属性(form、args、data、json、files、values)使用简介 - DEJAVU_ERIC - 博客园
3. WSGI 方式启动
[[WSGI]]
4. 内部接口调用
flask内部接口调用
不会走 http 协议,而是内部的接口
# 可以是 post 等 http 方法res = app.test_client().get("/api")
res.json # 返回内容Flask (逐行显示输出) https://flask.net.cn/patterns/streaming.html
5. SSE
直接用Response包装迭代器函数即可
from flask import Flask, render_template, Responseimport randomimport time
@app.route('/generate_numbers')def generate_numbers(): def generate(): for _ in range(5): number = random.randint(1, 100) # 生成随机数字 yield f"data: {number}\n\n" # 使用 Server-Sent Events (SSE) 格式发送数据 time.sleep(0.5) # 每隔 0.5 秒生成一个数字
yield "data: done\n\n" # 发送结束信号
headers = { 'Content-Type': 'text/event-stream', 'Cache-Control': 'no-cache', 'Connection': 'keep-alive', }
return Response(generate(), headers=headers)
done并不是 Server-Sent Events (SSE) 协议中规定的关键词或信号。它只是我们在实现中自定义的一个标识符,用于通知前端“数据发送完成”,在前端代码中,我们通过判断event.data === 'done'来决定何时关闭连接。
前端
// 创建 EventSource 连接const eventSource = new EventSource('/generate_numbers');
eventSource.onmessage = (event) => { if (event.data === 'done') { // 请求完成,关闭连接并恢复按钮状态 eventSource.close(); console.log('Generation complete'); } else { // 显示生成的数字 console.log('Generated number:', event.data); }};
eventSource.onerror = (error) => { console.error('Error:', error); eventSource.close();
console.log('Generation failed');};6. 参考资料
Python Flask的基础使用
https://cloudsir.top/posts/python-flask/