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

     

     

  • 相关阅读:
    Jedis常用方法 java
    Redis的set、map、list、value、实体类java
    Spring RedisTemplate关闭坏连接
    linux启动vue
    Mybatis实现批量更新sql语句(SSM实现批量更新sql语句)
    mybatis执行批量更新batch update 的方法(oracle,mysql)
    【VM+win7】VM虚拟机安装win7系统教程https://blog.csdn.net/hyhui13/article/details/82682181
    【beyond compare 4】秘钥过期解决办法
    【laravel5】Carbon类
    【Redis+PHP】利用redis的zset实现游戏排行榜功能
  • 原文地址:https://www.cnblogs.com/robertx/p/10685469.html
Copyright © 2020-2023  润新知