4_url_for的使用


url_for

與 django 的reverse('app_name:name') 類似,都是用來反轉路由的

url_for的基本使用:

url_for: url_for的一個參數是一個視圖函數的名字的字符串格式,后面的參數的參數以關鍵字的形式傳遞給url。 如果傳遞的參數在那個視圖中url中定義了,那么這個參數就會以路徑參數的形式給url。 如果傳遞的參數沒有在url中定義,那么這些參數將會以查詢字符串的形式放到url中。

from flask import Flask, url_for

app = Flask(__name__)

@app.route('/')
def index():
    my_list_path = url_for('my_list', page=1, count=111)
    print(my_list_path)       # 結果為: /list/1/?count=111
    return my_list_path

@app.route('/list/<int:page>/')
def my_list(page):
    return '第 {} 頁'.format(page)

為什么需要 url_for:

  1. 將來如果修改了URL, 但沒有修改該URL對應的函數名,就不用到處支替換URL了.
  2. url_for 會自動的處理那些特殊的字符,不需要手動處理
@app.route('')
def index():
    a = url_for('login', next='/')
    print(a)     # /login/?next=%2F  # 會自動編碼,不需要手動處理了
    return a

@app.route('/login/')
def login():
    return 'login'

使用url_for在模板中加載靜態文件

加載靜態文件使用的是url_for函數。第一個參數需要為'static', 第二個參數需要為一個關鍵字參數filename='靜態文件路徑'。 如下所示:

<link rel="stylesheet" href="{{ url_for('static', filename='css/index.css') }}">

路徑查找,要心當前項目的sttic目錄作為根目錄

強烈建議以后在使用url的時候,使用url_for來反轉 url


免責聲明!

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



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