路由系统
基本使用:
@app.route("detail/<int:nid>", methods=["GET"], endpoint="detail") def detail(nid): pass
Flask使用装饰器来写路由的
- 第一个参数是监听的路由,即路径。当监听到该路由时,执行下面紧挨着的第一个函数。其中的<int:nid>是转换器的用法,格式是**<转换器:参数名>**,是为了给下面的函数传递一些参数,常用的转换器还有:
- string,将接受到的作为字符串处理
- path, 接受路径
- int, 接受数字
- 第二个参数methods是监听的请求方法,有:GET, POST, PUT等
- endpoint是给该路由命名,默认是函数名,不能重名。用于反向生成URL,即:url_for(“名称”)
- defaults = None, 默认值,当URL中无参数,函数需要参数是,使用defaults = {“k”: “v”}为函数提供参数
- redirect_to = None, 重定向到指定地址,默认是None,即不重定向
request对象的常用属性
- request.method , 提交的方法
- request.args , get请求提交的数据
- request.form , post请求提交的数据
- request.values , post和get提交的数据总和
- request.cookies , 客服端所带的cookie
- request.headers , 请求头
- request.path , 不带域名,请求路径
- request.full_path , 不带域名,带参数的请求路径
- request.url , 带域名带参数的请求路径
- request.url_root , 域名
- request.host_url , 域名
闪现
- 设置: flask("aaa") - 取值:get_flashed_message(), 意如其名,取一次就没了 - 使用场景: 假设在a页面操作出错,跳转到b页面,在b页面显示a页面的错误信息
实例:
from flask import Flask, request, flash, get_flashed_messages app = Flask(__name__) app.debug = True app.secret_key = "12345df" @app.route("/") def root(): return "闪现测试" @app.route("/put_order1") def put_order1(): flash("oder1", category="order1") return "存放order1成功!" @app.route("/get_order1") def get_order1(): res = get_flashed_messages(category_filter=["order1"]) print(res) return res[0] @app.route("/put_order2") def put_order2(): flash("oder2", category="order2") return "存放order2成功!" @app.route("/get_order2") def get_order2(): res = get_flashed_messages(category_filter=["order2"]) print(res) return res[0] if __name__ == '__main__': app.run()