flask
导入 flask 函数
from flask import (
Flask,
render_template,
request,
redirect,
url_for,
Blueprint,
)
Flask 用来生成 Flask 实例
render_template 用来渲染模板
request 提供请求相关数据
redirect 重定向
url_for 方便导向某个路由
初始化一个 Flask 实例
app = Flask(__name__)as
使用蓝图
todo.py (在 routes 模块下) 创建一个蓝图对象
main = Blueprint('todo', __name__)
app.py 使用创建的蓝图对象注册蓝图
from routes.todo import main as todo_routes
app.register_blueprint(todo_routes, url_prefix='/todo')
声明路由
@app.route(path, methods=["GET", "POST"])
def index(param):
pass
使用 @ 装饰器声明路由,第一个参数是路由的路径,第二个参数是这个路由接受的请求方法
装饰器下面定义处理这个路由的函数,函数的参数是路由里面动态的部分
渲染模板
render_template 渲染模板,使用 jinja2 引擎 项目目录下 templates 的模板。
请求
request 对象,form属性以 MultiDict 形式存储请求中的 body 部分,args属性以 MultiDict 形式存储请求 URL 问号后面的部分。
重定向
redirect 重定向函数,重定向到某个路由。
动态路由
使用 url_for(‘path’, param) 可以动态生成路由
url_for("todo.update", todo_id=t.id)
上面代码中, 导向 todo(Blueprint 蓝图的名字)下update路由,动态部分是 todo_id, 如果 todo.update 代表 /todo/update, id 是 1,则实际导向的是 /todo/update/1
@main.route('/update/<int:todo_id>/', methods=['POST'])
def update(todo_id):
"""
更新TODO
"""
Todo.update(todo_id, request.form)
return redirect(url_for('.index'))
上面代码负责接收 update 路由,def update(todo_id) 中 todo_id, flask 会根据请求动态传进来, 如果是请求是上面 url_for 的情况,todo_id 则是 1