日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

flask之url_for函数

發布時間:2024/2/2 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 flask之url_for函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一:url_for函數

  干什么的?傳入函數名,得到函數的路由地址(訪問視圖函數的地址)

from flask import Flask
from flask import url_for

app = Flask(__name__)


@app.route("/")
def index():
    login_url = url_for("login")
    print(login_url)
    return "主頁"


@app.route("/login")
def login():
    return "登錄"

if __name__ == '__main__':
    app.run(debug=True)

例如:瀏覽器輸入:127.0.0.1:5000/ 顯示主頁 控制臺輸出 /login , 可以用它來完成跳轉鏈接的功能:對上面的函數進行修改,加入html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
         <a href="{{ a }}">登錄</a>
</body>
</html>
from flask import Flask
from flask import render_template
from flask import url_for

app = Flask(__name__)


@app.route("/")
def index():
    login_url = url_for("login")
    return render_template("url_for_test.html",a=login_url)


@app.route("/login")
def login():
    return "歡迎進入登錄頁面"

if __name__ == '__main__':
    app.run(debug=True)

點擊登錄后跳轉到下面界面

注意:

login_url = url_for("login",_external = True) 這樣會顯示完整的url地址

http://127.0.0.1:5000/login

還可以傳遞參數,對路徑進行拼接

login_url = url_for("login", a=1, _external = True)

http://127.0.0.1:5000/login?a=1 自動將位置參數,拼接成查詢字符串

login_url = url_for("login", name="haha", _external = True)

假如點擊index界面的登錄,不跳轉到登錄界面,而是顯示一張靜態的圖片

@app.route("/")
def index():
    login_url = url_for("static",filename="pic.jpg",_external=True)
    print(login_url)
    return render_template("url_for_test.html",a=login_url)

點擊登錄后,瀏覽器跳轉后,顯示了圖片, 控制臺輸出:http://127.0.0.1:5000/static/pic.jpg 這種情況瀏覽器沒有將 filenme="pic.jpg" 拼接成

http://127.0.0.1:5000/static?pic.jpg 而是 拼接成http://127.0.0.1:5000/static/pic.jpg

原因是:嘗試將參數 filename="pic.jpg" 改為 a="pic.jpg"

報錯:werkzeug.routing.BuildError: Could not build url for endpoint 'static' with values ['a']. Did you forget to specify values ['filename']?

說明:框架會自動分辨,要是以文件進行賦值,必須使用 filename="文件"

三:產生的意義

  在模板中的a標簽手動輸入鏈接地址,進行點擊跳轉,這個很簡答,很容易辦到。

  假如,視圖函數app.route("地址") 地址發生了,改變,那么要鏈接到這個視圖函數,就需要對前端的每個鏈接進行修改,這顯然不方便。

  但是,通過url_for直接能反向獲取視圖函數的鏈接地址,這樣就能省去,動態改變造成的麻煩。

總結

以上是生活随笔為你收集整理的flask之url_for函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。