1. 程式人生 > >Flask中的路由系統

Flask中的路由系統

瀏覽器 edi 3.6 dbo 系統 開始 clas 應用 get

Flask中的路由系統其實我們並不陌生了,從一開始到現在都一直在應用

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

至於為什麽這麽使用,馬上開始介紹

[email protected]() 裝飾器中的參數

(1).methods: 當前url地址,允許訪問的請求方式,默認支持"GET", 如果想加入新的請求方式,就必須加上"GET"

USER = {"username": "zm", "password": "123"}

@app.route("/", methods=["GET", "POST"])
def login():
    if request.method == "
POST": if request.form["username"] == USER["username"] and request.form["password"] == USER["password"]: session["user"] = USER["username"] return redirect("/index") return render_template("login.html", msg="用戶名或密碼錯誤") return render_template("login.html
", msg=None)

(2).endpoint: 反向取到當前的url地址,默認為視圖函數名 (r_login)

@app.route("/", methods=["GET", "POST"], endpoint="r_login")
def login():
    print(url_for("r_login"))
    if request.method == "POST":
        if request.form["username"] == USER["username"] and request.form["password"] == USER["password
"]: session["user"] = USER["username"] return redirect("/index") return render_template("login.html", msg="用戶名或密碼錯誤") return render_template("login.html", msg=None)

(3).defaults: 視圖函數的參數默認值{"nid": 1}

@app.route("/", methods=["GET", "POST"], defaults={"id": 1})
def login(id):
    print(id)
    if request.method == "POST":
        if request.form["username"] == USER["username"] and request.form["password"] == USER["password"]:
            session["user"] = USER["username"]
            return redirect("/index")
        return render_template("login.html", msg="用戶名或密碼錯誤")
    return render_template("login.html", msg=None)

(4).strict_slashes : url地址結尾符"/"的控制 False : 無論結尾 "/" 是否存在均可以訪問 , True : 結尾必須不能是 "/"

# strict_slashes=False    訪問地址: /index or /index/
@app.route("/index", strict_slashes=False)
def index():
    if not session.get("user"):
        return redirect("/")
    return f"Hello {USER[‘username‘]} 小哥"   # Python3.6的新特性f“{變量名}”

# strict_slashes=True    訪問地址: index/
@app.route("/index", strict_slashes=True)
def index():
    if not session.get("user"):
        return redirect("/")
    return f"Hello {USER[‘username‘]} 小哥"   # Python3.6的新特性f“{變量名}”

(5).redirect_to: url地址重定向

# 訪問地址: /index 瀏覽器跳轉至 /indexs
@app.route("/index", strict_slashes=False, redirect_to="/indexs")
def index():
    if not session.get("user"):
        return redirect("/")
    return f"Hello {USER[‘username‘]} 小哥"   # Python3.6的新特性f“{變量名}”

@app.route("/indexs")
def indexs():
    return "大家好,我是渣渣輝"

(6).subdomain: 子域名前綴subdomian="zm" 這樣寫可以得到zm.niub.com前提是

app.config["SERVER_NAME"]="niub.com"

app.config["SERVER_NAME"] = "oldboy.com"

@app.route("/info",subdomain="DragonFire")
def student_info():
    return "Hello Old boy info"

# 訪問地址為:  DragonFire.oldboy.com/info
# 必須得有一個線上服務器

2.動態參數路由

@app.route("/indexs/<int:id>")
def indexs(id):
    print(id)
    return "大家好,我是渣渣輝"

<int:nid> 就是在url後定義一個參數接收,但是這種動態參數路由,在url_for的時候,一定要將動態參數名+參數值添加進去,否則會拋出參數錯誤的異常

3.路由正則

一般不用,如果有特殊需求,不怕麻煩的話,這個東西還是挺好用的,前提是你的正則玩兒的很牛

Flask中的路由系統