
大綱
前文中我們講到,url(路由)和函數(shù)視圖的映射關(guān)系,也就是通過對(duì)應(yīng)的url,可以返回對(duì)應(yīng)的視圖函數(shù)。當(dāng)然我們通過視圖函數(shù)也能找到對(duì)應(yīng)的url路徑,這可以通過url_for來完成。接著我們講解重定向的知識(shí)點(diǎn)。
- url_for
- 重定向
url_for
首先,我們說說url_for的意義,大家在瀏覽網(wǎng)頁的時(shí)候都會(huì)有跳轉(zhuǎn),假設(shè)我們寫跳轉(zhuǎn)的時(shí)候,用url路徑,當(dāng)整個(gè)網(wǎng)站路徑需要修改時(shí),就需要更改這些代碼,如果我們使用的是url_for的話,修改量就很少(通常視圖函數(shù)是不修改的)。
接著,我們看看url_for的使用:
@app.route('/post/list/<page>/')
def my_list(page):
return 'my list'
print(url_for('my_list',page=1,count=2))
# 構(gòu)建出來的url:/my_list/1/?count=2
重定向
重定向分為永久性重定向和暫時(shí)性重定向,在頁面上體現(xiàn)的操作就是瀏覽器會(huì)從一個(gè)頁面自動(dòng)跳轉(zhuǎn)到另外一個(gè)頁面。比如用戶訪問了一個(gè)需要權(quán)限的頁面,但是該用戶當(dāng)前并沒有登錄,因此我們應(yīng)該給他重定向到登錄頁面。
具體操作如下:
from flask import Flask,request,redirect,url_for
app = Flask(__name__)
@app.route('/login/')
def login():
return '這是登錄頁面'
@app.route('/profile/')
def profile():
if request.args.get('name'):
return '個(gè)人中心頁面'
else:
# redirect 重定向
return redirect(url_for('login'))