flask學習之--路由
阿新 • • 發佈:2020-12-07
路由
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'))