zoukankan      html  css  js  c++  java
  • Flask系列03--Flask的路由 app.route中的参数, 动态参数路由

    Flask–路由

    添加路由的两种方式

    第一种

    @app.route("/my_de")
    def detail()

    第二种(了解即可)

    app.add_url_rule("/my_de",view_func=detail)

    一. @app.route()中的参数

    1.methods = [ ]:

    当前url地址,允许访问的请求方式 类型为可迭代对象,允许八种http请求方式

    @app.route("/info", methods=["GET", "POST"])
    def student_info():
        stu_id = int(request.args["id"])
        return f"Hello Old boy {stu_id}"  

     

    2.endpoint = “ ”

    路由Mapping地址对应视图函数,有点类似于django中的别名

    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}"  

     

    3.strict_slashes=True

    url地址结尾符“ / ”的控制False: 无论结尾 “ / ” 是否存在均可以访问, True: 结尾不允许是“ / ”, 类似与django中的APPEND_SLASH

    # 访问地址 : /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"

     

    4.defaults={}

    视图函数的参数默认值

    from flask import url_for
    ​
    @app.route("/info", methods=["GET", "POST"], endpoint="r_info", defaults={"nid": 100})
    def student_info(nid):
        print(url_for("r_info"))  # /info
        # stu_id = int(request.args["id"])
        print(nid)  # 100
        return f"Hello Old boy {nid}"

    5.redirect_to=“/index”

    url地址重定向, 浏览器的请求返回为308

    301和308都是永久重定向, 区别在于

    • 301 在重定向时允许改变请求方法
    • 308 在重定向时不允许改变请求方法,比如post请求被重定向时,redirect_to的url也为post请求方式,而301就有可能变成了get请求
    # 访问地址 : /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:

    子域名前缀, subdoadmin=“car”, 这样可以得到car.xxx.com 不过还需要配置app.config["SERVER_NAME"] = "xxx.com"

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

    二. 动态参数路由

    在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}" 

     

     

  • 相关阅读:
    C# 拖放操作源码详解
    Dev系列控件之XtraCharts(一)
    DateEdit如果开启Vista模式并显示日期+时间模式
    DevXpress控件: 第二篇将绘图进行到底: Charter控件(附图)
    C#操作Word (1)Word对象模型
    文曲星猜数,纯粹乱写
    转 浩方原理初步分析
    生成变换方向矩阵
    关于嵌套类的调用更新问题
    所有前n位可以被n整除的9位数
  • 原文地址:https://www.cnblogs.com/robertx/p/10685469.html
Copyright © 2011-2022 走看看