1. 程式人生 > >Flask_學習筆記_02: 頁面跳轉

Flask_學習筆記_02: 頁面跳轉

頁面跳轉是網頁開發中需要實現的最基本的一個功能,使用者點選頁面中的一個超連結或者按鈕,就會跳轉到一個新頁面。那麼在Flask當中是如何實現的呢?

在下面的例子中,也會用到url_for(),還有另外一個redirect。目前幾乎所有的網站都需要使用者登入,才能釋出新內容或者做相關的更改。下面就以使用者要釋出一篇新文章,點擊發布文章按鈕為例,判斷如果使用者登入了,就直接跳轉到釋出新文章頁面,如果使用者沒有登入,就跳轉到登入頁面。

程式碼如下:

from flask import Flask, url_for, redirect

app = Flask(__name__)

@app.route("/")
def index():
    return "這是首頁!"

@app.route("/login/")
def login():
    return "這是登入頁面!"

@app.route("/publish_howto/<is_login>")
def publish_howto(is_login):
    if is_login == '1':
        return "歡迎來到釋出howto頁面!"
    else:
        return redirect(url_for('login'))

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

首先要匯入url_for和redirect
然後寫一個登入頁面檢視函式:login
再寫一個釋出文章頁面:publish_howto,需要注意的是需要加一個引數,來判斷使用者是否登入,我們把引數命名為is_login,後面學了cookie之後再做程式碼優化,現在只是模擬一下,知道了這個邏輯就好。在釋出文章的檢視函式中就要判斷了,如果使用者已經登入,就留在釋出頁面,返回釋出頁面的內容給使用者;如果使用者沒有登入,就重定向到使用者登入頁面。
實際效果見下:
首先來模仿一下使用者未登入,訪問釋出文章頁面,輸入URL: http://127.0.0.1:5000/publish_howto/0 然後回車,使用者就會被重定向到登入頁面:
Flask_學習筆記_02: 頁面跳轉

再來模仿一下使用者已經登入,訪問釋出文章頁面,輸入URL: http://127.0.0.1:5000/publish_howto/1 然後回車,使用者就會留在釋出文章頁面:
Flask_學習筆記_02: 頁面跳轉

嗯,感覺很簡單啊!

小結:
今天的重點在: return redirect(url_for('login'))
頁面重定向要用到redirect()函式,而重定向的頁面URL,我們最好用url_for反轉得到最終的URL地址,不需要寫死URL地址,這樣的好處就是以後URL地址有變,你也不需要更改,大大減少了程式碼維護,效率得到了大大的提高啊!