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

    Flask中的路由系统其实我们并不陌生了,从一开始到现在都一直在应用

    @app.route("/",methods=["GET","POST"])

    为什么要这么用?其中的工作原理我们知道多少?

    一、@app.route() 装饰器中的参数

    methods :当前 url 地址,允许访问的请求方式

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

    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  girl {stu_id}"  # Python3.6的新特性 f"{变量名}"

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

    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 girl {nid}"  # Python3.6的新特性 f"{变量名}"

    strict_slashes :url地址结尾符"/"的控制 ,False : 无论结尾 "/" 是否存在均可以访问,True:必须严格遵循route的路由规则。

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

    redirect_to : url地址重定向,在进入视图函数之前重定向(301)

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

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

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

    动态路由参数<int:nid>or<string:nid>:

    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 girl {nid}"  # Python3.6的新特性 f"{变量名}"

    <int:nid> 就是在url后定义一个参数接收,如果不指定参数类型默认为所有接受的参数都会被转为字符串类型。

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

  • 相关阅读:
    链表及其各种函数操作的实现方法
    插入排序
    欧几里得算法
    Cookie和Session
    RestTemplate 中文乱码
    java8 按两个属性分组,并返回扁平List; stream排序
    Spring 读取资源
    linux搭建Git
    IDEA 快捷键
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/fengchong/p/10246395.html
Copyright © 2011-2022 走看看