前言
前段时间写微服务用到了 Flask, 后来使用 SpringBoot 了,就没怎么用了,现在想边看官方文档边记笔记来复习和提高一哈。
Web 框架基本处理过程:
- 客户端发起 HTTP Request
- Web 应用根据 URL Route 找到对应的处理函数
- 解析 Request 中传递的数据 & 进行相关处理操作
- 返回给客户端 Response
Flask 窥探
1. 创建 Flask Web 应用
from flask import Flask,
app = Flask(__name__)
2. Route 路由设置 & 请求方式
@app.route('/', method=['POST', 'GET'])
def handle():
pass
3. HTTP Request 请求参数解析
@app.route('/', method=['POST', 'GET'])
def handler():
args = request.args # 跟在 url 后面的参数
form = request.form # form 表单参数
data = request.get_json() # request body 参数
file = request.files # 文件数据
4. HTTP Response 基本形态
可以以 (response, statue_code) 的形式返回
@app.route('/')
def handler():
# 1. 返回渲染的模板
response = render_template('index', name=name))
# 2. 返回字符串
response = 'hello...'
# 3. 返回对象的 jsonify
response = jsonify([1, 2, 3])
5. HTTP Request 请求重定向
@app.route('/')
def handler():
# url_for('A') 返回函数名为 A 的 route 路由地址
return redirect(url_for('login'))
@app.route('/')
def handler():
abort(404)
6. HTTP 状态异常处理
@app.errorhandler(404)
def page_not_found(error):
return render_template('page_not_found.html'), 404
7. HTTP Cookies
@app.route('/')
def handler():
# 获取 Cookies
username = request.cookies.get('username')
# 设置 Cookies
resp = make_response(render_template(...))
resp.set_cookie('username', 'the username')
return resp
8. HTTP Session
@app.route('/')
def handler():
session.get('username', None)
session.pop('username', None)
return redirect(url_for('index'))
9. Flask Flashed
@app.route('/login', methods=['GET', 'POST'])
def login():
error = None
if request.method == 'POST':
if request.form['username'] != 'admin' or \
request.form['password'] != 'secret':
error = 'Invalid credentials'
else:
# 在页面跳转的"缓冲页面"
flash('You were successfully logged in')
return redirect(url_for('index'))
return render_template('login.html', error=error)
10. Flask Log
app.logger.dubug()
app.logger.warning()
app.logger.error()
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。