zoukankan      html  css  js  c++  java
  • Flask 中的路由系统

    1.methods允许请求的方法

    methods : 当前 url 地址,允许访问的请求方式,默认不写为GET方法

    @app.route("/info", methods=["GET", "POST"])
    def student_info():
        stu_id = int(request.args["id"])
        return f"Hello Old boy {stu_id}"  # Python3.6的新特性 f"{变量名}"
    

    2.endpoint url的反向解析

    endpoint : 反向url地址,默认为视图函数名 (url_for)

    from flask import url_for
    
    
    @app.route("/info", methods=["GET", "POST"], endpoint="r_info")
    def student_info():
        print(url_for("r_info"))  # /info
        stu_id = int(request.args["id"])
        return f"Hello Old boy {stu_id}"  # Python3.6的新特性 f"{变量名}
    

    3.defaults默认参数

    defaults : 视图函数的参数默认值{"nid":1}

    from flask import url_for
    
    
    @app.route("/info", methods=["GET", "POST"], endpoint="r_info", defaults={"nid": 100})
    def student_info(nid):  #这里形参必须有个nid接收
        print(url_for("r_info"))  # /info
        # stu_id = int(request.args["id"])
        print(nid)  # 100
        return f"Hello Old boy {nid}"  # Python3.6的新特性 f"{变量名}"
    

    4.strict_slashes url结尾界定符匹配

    strict_slashes : url地址结尾符"/"的控制 False : 无论结尾 "/" 是否存在均可以访问 , True : 结尾必须不能是 "/"

    # 访问地址 : /info 
    @app.route("/info", strict_slashes=True)
    def student_info():
        return "Hello Old boy info"
    
    
    # 访问地址 : /infos  or  /infos/
    @app.route("/infos", strict_slashes=False)
    def student_infos():
        return "Hello Old boy infos"
    

    5.redirect_to url地址重定向

    redirect_to : url地址重定向,且为308永久重定向

    # 访问地址 : /info 浏览器跳转至 /infos
    @app.route("/info", strict_slashes=True, redirect_to="/infos")
    def student_info():
        return "Hello Old boy info"
    
    @app.route("/infos", strict_slashes=False)
    def student_infos():
        return "Hello Old boy infos"
    

    6.subdomain 子域名

    subdomain : 子域名前缀 subdomian="cnblogs" 这样写可以得到 cnblogs.aspx.com 前提是app.config["SERVER_NAME"] = "aspx.com"

    app.config["SERVER_NAME"] = "aspx.com"
    
    @app.route("/info",subdomain="cnblogs")
    def student_info():
        return "Hello cnblogs info"
    
    # 访问地址为:  cnblogs.aspx.com/info
    

    7.动态参数路由

    int:nid 就是在url后定义一个参数接收

    但是这种动态参数路由,在url_for的时候,一定要将动态参数名+参数值添加进去,否则会抛出参数错误的异常

    from flask import url_for
    
    
    # 访问地址 : http://127.0.0.1:5000/info/1
    @app.route("/info/<int:nid>", methods=["GET", "POST"], endpoint="r_info")
    def student_info(nid):
        print(url_for("r_info",nid=2))  # /info/2
        return f"Hello Old boy {nid}"  # Python3.6的新特性 f"{变量名}"
    

    多个参数传递:

    from flask import url_for
    
    
    # 访问地址 : http://127.0.0.1:5000/info/1
    @app.route("/info/<nid1>/<nid2>", methods=["GET", "POST"], endpoint="r_info")
    def student_info(nid):
        print(url_for("r_info",nid=2,nid=3))  # /info/2/3
        return f"Hello Old boy {nid}"  # Python3.6的新特性 f"{变量名}"
    
  • 相关阅读:
    c++内存管理5-虚拟内存4区结构图
    C++内存管理5-处理new分配内存失败情况(转)
    C++内存管理4-Windows编程中的堆管理(转)
    C++内存管理3-探讨C++内存和回收
    C++内存管理2-内存泄漏
    VS2015远程调试
    C++内存管理1-64位系统运行32位软件会占用更多的内存吗?
    ffmpeg安装步骤
    golang字符串拼接
    如何严格设置php中session过期时间
  • 原文地址:https://www.cnblogs.com/fengqiang626/p/11889394.html
Copyright © 2011-2022 走看看