flask框架路由常用定義方式總結(jié)
本文實例講述了flask框架路由常用定義方式。分享給大家供大家參考,具體如下:
路由的各種定義方式
請求方式限定
使用 methods 參數(shù)指定可接受的請求方式,可以是多種
@app.route('/',methods=['GET']) def hello(): return '<h1>hello world</h1>'
路由查找方式
同一路由指向兩個不同的函數(shù),在匹配過程中,至上而下依次匹配
@app.route('/') def hello(): return '<h1>hello world</h1>' @app.route('/') def hello_2017(): return '<h1>hello 2017</h1>'
所以上面路由 / 輸出的結(jié)果為 hello 函數(shù)的結(jié)果
給路由傳參示例
有時我們需要將同一類URL映射到同一個視圖函數(shù)處理,比如:使用同一個視圖函數(shù) 來顯示不同用戶的個人信息。
路由傳遞的參數(shù)默認當做string處理,這里指定int,尖括號中的內(nèi)容是動態(tài)的,也可不指定類型
@app.route('/user/<int:id>') def hello_itheima(id): return 'hello itcast %d' %id
重定向redirect示例
from flask import redirect @app.route('/') def hello_itheima(): return redirect('http://www.itcast.cn')
返回JSON
from flask import Flask,json @app.route('/json') def do_json(): hello = {"name":"stranger", "say":"hello"} return json.dumps(hello)
返回狀態(tài)碼示例
在 Python 中返回狀態(tài)碼有兩種方式實現(xiàn):
- 直接return
- 可以自定義返回狀態(tài)碼,可以實現(xiàn)不符合http協(xié)議的狀態(tài)碼,例如:error=666,errmsg='查詢數(shù)據(jù)庫異常',其作用是為了實現(xiàn)前后端數(shù)據(jù)交互的方便
- abort方法
- 只會拋出符合http協(xié)議的異常狀態(tài)碼,用于手動拋出異常
@app.route('/') def hello_itheima(): return 'hello itcast',666
正則路由示例
在web開發(fā)中,可能會出現(xiàn)限制用戶訪問規(guī)則的場景,那么這個時候就需要用到正則匹配,限制訪問,優(yōu)化訪問
導(dǎo)入轉(zhuǎn)換器包
from werkzeug.routing import BaseConverter
自定義轉(zhuǎn)換器并實現(xiàn)
# 自定義轉(zhuǎn)換器 class Regex_url(BaseConverter): def __init__(self,url_map,*args): super(Regex_url,self).__init__(url_map) self.regex = args[0] app = Flask(__name__) # 將自定義轉(zhuǎn)換器類添加到轉(zhuǎn)換器字典中 app.url_map.converters['re'] = Regex_url @app.route('/user/<re("[a-z]{3}"):id>') def hello_itheima(id): return 'hello %s' %id
自帶幾種轉(zhuǎn)換器
DEFAULT_CONVERTERS = { 'default': UnicodeConverter, 'string': UnicodeConverter, 'any': AnyConverter, 'path': PathConverter, 'int': IntegerConverter, 'float': FloatConverter, 'uuid': UUIDConverter, }
希望本文所述對大家基于flask框架的Python程序設(shè)計有所幫助。
相關(guān)文章
pyenv虛擬環(huán)境管理python多版本和軟件庫的方法
這篇文章主要介紹了pyenv虛擬環(huán)境管理python多版本和軟件庫,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Windows下anaconda安裝第三方包的方法小結(jié)(tensorflow、gensim為例)
conda的設(shè)計理念——conda將幾乎所有的工具、第三方包都當做package對待,甚至包括python和conda自身!因此,conda打破了包管理與環(huán)境管理的約束,能非常方便地安裝各種版本python、各種package并方便地切換2018-04-04Django在admin后臺集成TinyMCE富文本編輯器的例子
今天小編就為大家分享一篇Django在admin后臺集成TinyMCE富文本編輯器的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08