Python的Flask框架路由實(shí)現(xiàn)詳解
一、路由
通過URL訪問一個網(wǎng)頁,使用 route() 裝飾器把函數(shù)綁定到 URL
使用 route() 裝飾器把函數(shù)綁定URL示例:
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Index Page' @app.route('/hello') def hello(): return 'Hello, World' if __name__ == '__main__': app.run()
運(yùn)行flask后,可打開本地路徑進(jìn)行訪問
訪問路徑://127.0.0.1:5000/
訪問路徑://127.0.0.1:5000/hello
二、URL變量
1、變量規(guī)則
通過把 URL 的一部分標(biāo)記為 <variable_name> 就可以在 URL 中添加變量。標(biāo)記的部分會作為關(guān)鍵字參數(shù)傳遞給函數(shù)。通過使用 converter:variable_name ,可以選擇性的加上一個轉(zhuǎn)換器,為變量指定規(guī)則
from markupsafe import escape from flask import Flask app = Flask(__name__) @app.route('/user/<username>') def show_user_profile(username): # show the user profile for that user return f'User {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 f'Post {post_id}' @app.route('/path/<path:subpath>') def show_subpath(subpath): # show the subpath after /path/ return f'Subpath {escape(subpath)}' if __name__ == '__main__': app.run()
url支持的變量類型:
類型 | 說明 |
string | (缺省值) 接受任何不包含斜杠的文本 |
int | 接受正整數(shù) |
float | 接受浮點(diǎn)數(shù) |
path | 類似 string ,但可以包含斜杠 |
uuid | 接受 UUID 字符串 |
訪問路徑//127.0.0.1:5000/user/盤盤
2、唯一的 URL / 重定向行為
代碼如下(示例):
@app.route('/projects/') def projects(): return 'The project page' @app.route('/about') def about(): return 'The about page'
projects 的 URL 是中規(guī)中矩的,尾部有一個斜杠,看起來就如同一個文件夾。訪問一個沒有斜杠結(jié)尾的 URL ( /projects )時 Flask 會自動進(jìn)行重定向,自動在尾部加上一個斜杠( /projects/ )
about 的 URL 沒有尾部斜杠,因此其行為表現(xiàn)與一個文件類似。如果訪問這個 URL 時添加了尾部斜杠( /about/
)就會得到一個 404 “未找到” 錯誤。這樣可以保持 URL 唯一,并有助于搜索引擎重復(fù)索引同一頁面
3、URL 構(gòu)建
url_for() 函數(shù)用于構(gòu)建指定函數(shù)的 URL。 它把函數(shù)名稱作為第一個 參數(shù)。它可以接受任意個關(guān)鍵字參數(shù),每個關(guān)鍵字參數(shù)對應(yīng) URL 中的變量
from flask import 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 f'{username}\'s profile' 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'))
輸出:
/
/login
/login?next=/
/user/John%20Doe
到此這篇關(guān)于Python的Flask框架路由實(shí)現(xiàn)詳解的文章就介紹到這了,更多相關(guān)Flask 路由內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python中實(shí)現(xiàn)json數(shù)據(jù)和類對象相互轉(zhuǎn)化的四種方式
在日常的軟件測試過程中,測試數(shù)據(jù)的構(gòu)造是一個占比非常大的活動,對于測試數(shù)據(jù)的構(gòu)造,分為結(jié)構(gòu)化的數(shù)據(jù)構(gòu)造方式和非結(jié)構(gòu)化的數(shù)據(jù)構(gòu)造方式,此篇文章,會通過4種方式來展示json數(shù)據(jù)與python的類對象相互轉(zhuǎn)化,需要的朋友可以參考下2024-07-07用python介紹4種常用的單鏈表翻轉(zhuǎn)的方法小結(jié)
這篇文章主要介紹了用python介紹4種常用的單鏈表翻轉(zhuǎn)的方法小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02Python實(shí)現(xiàn)對象轉(zhuǎn)換為xml的方法示例
這篇文章主要介紹了Python實(shí)現(xiàn)對象轉(zhuǎn)換為xml的方法,結(jié)合實(shí)例形式分析了Python對象屬性、節(jié)點(diǎn)的操作及與xml相互轉(zhuǎn)換的相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06以windows service方式運(yùn)行Python程序的方法
這篇文章主要介紹了以windows service方式運(yùn)行Python程序的方法,可實(shí)現(xiàn)將Python程序變成windows服務(wù)的功能,需要的朋友可以參考下2015-06-06Django+Celery實(shí)現(xiàn)動態(tài)配置定時任務(wù)的方法示例
這篇文章主要介紹了Django + Celery 實(shí)現(xiàn)動態(tài)配置定時任務(wù)的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05Python圖片視頻超分模型RealBasicVSR的使用教程
這篇文章主要和大家分享一個有意思的模型:RealBasicVSR。這個模型可以實(shí)現(xiàn)圖片或視頻的超分處理,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-05-05