什麼是重定向?
重定向(Redirection)是 Web 開發中一個常見的概念,它允許伺服器將客戶端的請求從一個 URL 重定向到另一個 URL。重定向通常用於以下幾種情況:
- URL 變更:當網站的某個頁面的 URL 發生變化時,可以透過重定向將舊 URL 的請求重定向到新 URL。
- 登入驗證:當用戶嘗試訪問需要登入的頁面時,如果用戶未登入,可以重定向到登入頁面。
- 表單提交後:表單提交後,通常會重定向到另一個頁面,以避免用戶刷新頁面時再次提交表單。
- 維護或更新:當網站正在進行維護或更新時,可以將用戶重定向到一個維護頁面。
一句話概述:重定向的本質是跳轉。
在 Flask 框架中,重定向是透過redirect
函數實現的,該函數接受一個 URL 作為參數,並可選擇性地接受一個狀態碼。通常,重定向用於在用戶完成某些操作後,將他們導航到另一個頁面。例如,用戶登入成功後,可以被重定向到個人資料頁面。比如有些頁面退出登入後不能讓人訪問這個頁面,此時就可以直接讓其退出登入後跳轉到首頁。
重定向的基本使用
Flask 的redirect
函數允許你將用戶從一個路由重定向到另一個路由。默認情況下,redirect
使用 302 狀態碼,表示臨時重定向。如果你想進行永久重定向,可以將狀態碼改為 301。
from flask import Flask, redirect
app = Flask(__name__)
@app.route('/')
def index():
# 臨時重定向到登入頁面
return redirect('/login')
@app.route('/login')
def login():
return '登入頁面'
if __name__ == '__main__':
app.run(debug=True)
重定向並傳遞參數#
在重定向時,有時需要傳遞參數到目標 URL。在 Flask 中,可以使用url_for
函數來構建帶有參數的 URL。url_for
接受端點名稱和一系列關鍵字參數,這些參數將作為查詢字符串附加到 URL。
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/')
def index():
# 傳遞參數並重定向到個人資料頁面
return redirect(url_for('profile', name='John'))
@app.route('/profile/<name>')
def profile(name):
# 使用URL參數中的name
return f'歡迎{name}進入個人資料頁面!'
if __name__ == '__main__':
app.run(debug=True)
在上面的示例中,index
函數透過url_for
函數生成了帶有用戶名參數的profile路由的 URL,並將用戶重定向到該 URL。profile
函數接收這個參數,並用它來顯示個性化的歡迎信息。
獲取重定向參數#
在目標路由中,可以透過request.args
來獲取傳遞的參數。這是一個字典,包含了所有傳遞的參數及其值。
from flask import Flask, request
app = Flask(__name__)
@app.route('/profile')
def profile():
# 獲取重定向參數
username = request.args.get('name')
return f'歡迎{username}進入個人資料頁面!'
if __name__ == '__main__':
app.run(debug=True)
在這個示例中,profile
函數使用request.args.get
方法來獲取名為name
的參數值,並顯示個性化的歡迎信息。
總結來說,Flask 中的重定向是一個強大的功能,它不僅可以簡單地將用戶從一個頁面導航到另一個頁面,還可以在這個過程中傳遞參數,從而實現更複雜的導航邏輯。透過這些技術,可以有效地提升用戶體驗和應用程序的互動性。