• flask之route中的参数


    flask的路由中有一些参数

    使用案例

    from flask import Flask, render_template, url_for, session, request, redirect
    
    app = Flask(__name__)
    app.secret_key = "wang"
    
    
    def confirm(func):
        def inner(*args, **kwargs):
            if session.get('auth'):
                return func(*args, **kwargs)
            else:
                next_url = request.path[1:]
                return redirect(url_for("login") + f"?next={next_url}")
    
        return inner
    
    
    @app.route('/', endpoint="index", redirect_to="/shopping")
    @confirm
    def index():
        return "index"
    
    
    @app.route('/login/', methods=["GET", "POST"], defaults={"nid": 1001, }, strict_slashes=True)
    def login(nid):
        msg = ""
        print("===>", url_for("index"))
        # ===> /login, 当没有定义endpoint是, 可以直接写函数名, 当定义了
        print("===>", nid)
        # ===> 1001
        if request.method == "POST":
            auth = request.form.get("auth")
            if auth:
                session["auth"] = auth
                next_url = request.args.get("next", "index")
                return redirect(url_for(next_url))
            else:
                msg = "error"
        return render_template("login.html", msg=msg)
    
    
    @app.route('/shopping/<int:year>/<string:month>', endpoint="shopping")
    def shopping(year, month):
        print(year, type(year), month, type(month))
        # 1 <class 'int'> 2 <class 'str'>
        return "Shopping"
    
    
    if __name__ == '__main__':
        app.run(debug=True)

    参数解析

    重要的

    endpoint=""     默认是函数名, 可以在app.route()的关键字参数中定义
    url_for("")     反向地址, 通过视图函数名, 或endpoint解析对应的URL
    methods=[]      该视图函数能处理的请求方式, 默认是GET, 当重新定义了methods, 那么默认的GET也会被覆盖

    一般的

    defaults={}     给视图函数传递参数, 可以作为默认参数, 传了就必须的接
    strict_slashes=Bool     严格的使用"/", URL中没有"/", 访问时也不能有, URL中有"/", 你访问时没有, 会通过301进行永久重定向
    redirect_to=""      永久重定向

    动态路由参数

    '/shopping/<int:year>/<string:month>'   路由中使用参数, 并可以转换参数的数据类型, 切记数字可以转字符串, 字符串不能转数字
  • 相关阅读:
    如何使用Vue原生组件编译应用程序主题?这个工具不要错过
    BTC系统中具体的区块信息
    hash(哈希)
    比特币共识协议
    计算多分类softmax的loss function
    逻辑回归0.环境设定
    分布式共识
    Hash pointer(哈希指针)
    数字货币中经常出现的问题
    比特币激励机制
  • 原文地址:https://www.cnblogs.com/594504110python/p/10132692.html
Copyright © 2020-2023  润新知