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

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM