1. 程式人生 > 實用技巧 >flask學習之--路由

flask學習之--路由

路由

1 什麼是路由

​ 個人理解,就是路徑,客戶端去訪問到伺服器中的HTML檔案的訪問路徑

​ 使用route()裝飾器來把函式去繫結到URL 中

​ 例如:

@app.route('/')
def index():
    return 'Index Page'

@app.route('/hello')
def hello():
    return 'Hello, World'

2 變數規則

​ 除了上述那種簡單的規則外,在實際的過程中,通過把 URL 的一部分標記為 <variable_name> 就可以在 URL 中新增變數。標記的 部分會作為關鍵字引數傳遞給函式。通過使用 <converter:variable_name>

,可以 選擇性的加上一個轉換器,為變數指定規則。請看下面的例子:

@app.route('/user/<username>')
def show_user_profile(username):
    # show the user profile for that user
    return 'User %s' % escape(username)

@app.route('/post/<int:post_id>')
def show_post(post_id):
    # show the post with the given id, the id is an integer
    return 'Post %d' % post_id

@app.route('/path/<path:subpath>')
def show_subpath(subpath):
    # show the subpath after /path/
    return 'Subpath %s' % escape(subpath)

相當於通過URL 將前端頁面上的引數,返回到伺服器,進行分類顯示/跳轉等等操作

具體的轉換器型別列表如下:

string (預設值) 接受任何不包含斜槓的文字
int 接受正整數
float 接受正浮點數
path 類似 string ,但可以包含斜槓
uuid 接受 UUID 字串

{注意一下}:唯一的URL 和重定向行為,這兩條規則的不同之處在於是否使用尾部的斜槓,例如:

@app.route('/projects/')
def projects():
    return 'The project page'

@app.route('/about')
def about():
    return 'The about page'

projects 的 URL 是中規中矩的,尾部有一個斜槓,看起來就如同一個資料夾。 訪問一個沒有斜槓結尾的 URL 時 Flask 會自動進行重定向,幫你在尾部加上一個斜槓。

about 的 URL 沒有尾部斜槓,因此其行為表現與一個檔案類似。如果訪問這個 URL 時添加了尾部斜槓就會得到一個 404 錯誤。這樣可以保持 URL 唯一,並幫助 搜尋引擎避免重複索引同一頁面。

3 路由的逆用--URL 構建

暫且用這個名字吧,什麼意思? 路由,是由客戶端訪問到伺服器檔案的路徑。那麼問題來了,能不能伺服器自己訪問自己的相關檔案路徑呢?答案:可以的。為啥這樣做?簡單,解耦,最最核心的是,模組化。無論你在那裡,都可以通過URL 構建找到,想要的URL路徑。

{注意一下}:對於初學者或者小專案用處不是特別大,但是,對於大工程,就會很有用。可以先看一個例子瞭解下。

from flask import Flask, escape, url_for

app = Flask(__name__)

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

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

@app.route('/user/<username>')
def profile(username):
    return '{}\'s profile'.format(escape(username))

with app.test_request_context():
    print(url_for('index'))
    print(url_for('login'))
    print(url_for('login', next='/'))
    print(url_for('profile', username='John Doe'))