Python的Flask框架路由實(shí)現(xiàn)詳解
一、路由
通過(guò)URL訪問(wèn)一個(gè)網(wǎng)頁(yè),使用 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后,可打開(kāi)本地路徑進(jìn)行訪問(wèn)
訪問(wèn)路徑://127.0.0.1:5000/

訪問(wèn)路徑://127.0.0.1:5000/hello

二、URL變量
1、變量規(guī)則
通過(guò)把 URL 的一部分標(biāo)記為 <variable_name> 就可以在 URL 中添加變量。標(biāo)記的部分會(huì)作為關(guān)鍵字參數(shù)傳遞給函數(shù)。通過(guò)使用 converter:variable_name ,可以選擇性的加上一個(gè)轉(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支持的變量類(lèi)型:
| 類(lèi)型 | 說(shuō)明 |
| string | (缺省值) 接受任何不包含斜杠的文本 |
| int | 接受正整數(shù) |
| float | 接受浮點(diǎn)數(shù) |
| path | 類(lèi)似 string ,但可以包含斜杠 |
| uuid | 接受 UUID 字符串 |
訪問(wèn)路徑//127.0.0.1:5000/user/盤(pán)盤(pán)

2、唯一的 URL / 重定向行為
代碼如下(示例):
@app.route('/projects/')
def projects():
return 'The project page'
@app.route('/about')
def about():
return 'The about page'projects 的 URL 是中規(guī)中矩的,尾部有一個(gè)斜杠,看起來(lái)就如同一個(gè)文件夾。訪問(wèn)一個(gè)沒(méi)有斜杠結(jié)尾的 URL ( /projects )時(shí) Flask 會(huì)自動(dòng)進(jìn)行重定向,自動(dòng)在尾部加上一個(gè)斜杠( /projects/ )
about 的 URL 沒(méi)有尾部斜杠,因此其行為表現(xiàn)與一個(gè)文件類(lèi)似。如果訪問(wèn)這個(gè) URL 時(shí)添加了尾部斜杠( /about/ )就會(huì)得到一個(gè) 404 “未找到” 錯(cuò)誤。這樣可以保持 URL 唯一,并有助于搜索引擎重復(fù)索引同一頁(yè)面
3、URL 構(gòu)建
url_for() 函數(shù)用于構(gòu)建指定函數(shù)的 URL。 它把函數(shù)名稱(chēng)作為第一個(gè) 參數(shù)。它可以接受任意個(gè)關(guān)鍵字參數(shù),每個(gè)關(guān)鍵字參數(shù)對(duì)應(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django 自定義分頁(yè)器的實(shí)現(xiàn)代碼
這篇文章主要介紹了Django 自定義分頁(yè)器的實(shí)現(xiàn)代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
跟老齊學(xué)Python之傳說(shuō)中的函數(shù)編寫(xiě)條規(guī)
在使用函數(shù)的時(shí)候,首先要把它放在對(duì)象的層面考量,它不是什么特殊的東西,盡管我們使用了不少篇幅講述它,但它終歸還是一個(gè)對(duì)象。2014-10-10
python實(shí)現(xiàn)數(shù)據(jù)挖掘中分箱的示例代碼
數(shù)據(jù)分箱(英語(yǔ):Data?binning)是一種數(shù)據(jù)預(yù)處理方法,用于最大限度地減少小觀測(cè)誤差的影響,本文主要為大家介紹了python實(shí)現(xiàn)數(shù)據(jù)分箱的相關(guān)知識(shí),感興趣的可以了解下2024-01-01
Python中的可視化設(shè)計(jì)與UI界面實(shí)現(xiàn)
本文介紹了如何使用Python創(chuàng)建用戶(hù)界面(UI),包括使用Tkinter、PyQt、Kivy等庫(kù)進(jìn)行基本窗口、動(dòng)態(tài)圖表和動(dòng)畫(huà)效果的實(shí)現(xiàn),通過(guò)示例代碼,展示了如何利用這些庫(kù)來(lái)構(gòu)建功能強(qiáng)大且美觀的界面2025-01-01
Python爬取百度春節(jié)祝福語(yǔ)并生成心形詞云
這篇文章主要介紹了利用Python爬蟲(chóng)爬取百度的春節(jié)祝福語(yǔ),并將其生成心形詞云,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起試試2022-01-01
Python報(bào)錯(cuò)ValueError:?cannot?convert?float?NaN?to?intege
在Python編程中,我們經(jīng)常需要處理各種數(shù)據(jù)類(lèi)型,包括浮點(diǎn)數(shù)和整數(shù),然而,有時(shí)候我們可能會(huì)遇到一些意外的情況,比如將一個(gè)包含NaN(Not?a?Number)的浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)時(shí),就會(huì)拋出錯(cuò)誤,本文將探討這個(gè)錯(cuò)誤的原因,并給出幾種可能的解決方案,需要的朋友可以參考下2024-09-09
python使用pandas讀xlsx文件的實(shí)現(xiàn)
這篇文章主要介紹了python使用pandas讀xlsx文件的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
Python實(shí)現(xiàn)圖片和base64轉(zhuǎn)換詳解
這篇文章主要介紹了Python實(shí)現(xiàn)圖片和base64轉(zhuǎn)換詳解,Base64是一種二進(jìn)制到文本的編碼方式,如果要更具體一點(diǎn)的話,可以認(rèn)為它是一種將 byte數(shù)組編碼為字符串的方法,而且編碼出的字符串只包含ASCII基礎(chǔ)字符,需要的朋友可以參考下2024-01-01

