最近在學Python Flask框架,并且學會做一些簡單的項目,如做一個網站的登錄頁面等,其中學到了一個路由反向解析的函數?url_for(),這里做一個小結,供日后復習。
1.URL反轉:根據視圖函數名稱得到當前所指向的url
2.url_for() 函數最簡單的用法是以視圖函數名作為參數,返回對應的url,還可以用作加載靜態文件,如:
<link rel="stylesheet" href="{{url_for('static',filename='css/index.css')}}">
該條語句就是在模版中加載css靜態文件.?
原因:
app.url_map有static靜態路由
<Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>])
即可通過url_for()反向解析url,配合jinja2引擎 生成正確的rel
3.url_for 和 redirect 區別
url_for是用來拼接 URL 的;
可以使用程序 URL 映射中保存的信息生成 URL。url_for() 函數最簡單的用法是以視圖函數名作為參數, 返回對應的 URL。例如,在示例程序中 hello.py 中調用 url_for('index') 得到的結果是 /。
redirect 是重定向函數,輸入一個URL后,自動跳轉到另一個URL所在的地址,例如,你在函數中寫?return redirect('https://www.baidu.com')?頁面就會跳轉向百度頁面。
#encoding: utf-8from flask import Flask,redirect,url_forapp = Flask(__name__)@app.route('/')
def index():login_url = url_for('login')return redirect(login_url)return u'這是首頁'@app.route('/login/')
def login():return ?u'這是登陸頁面'@app.route('/question/<is_login>/')
def question(is_login):if is_login == '1':return ?u'這是發布問答的頁面'else:return ?redirect(url_for('login')) #重定向到login頁面 /login/ if __name__ == '__main__':app.run(debug=True)
?