Flask 2019-10-08

python2與python3都有經(jīng)典類和新式類這兩種寫法黍匾,在python2中經(jīng)典類和新式類的.? ? 繼承方式不一樣,在python3中都一樣玉雾。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在python2中 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 新式類:廣度繼承 多繼承時(shí)色建,實(shí)例化的對象在調(diào)用模塊時(shí)先從實(shí)例化類本身去去尋找,找不到然后去所繼承的第一個(gè)父類去尋找蜘澜,如第一個(gè)父類中沒有就去實(shí)例化類的第二個(gè)繼承的父類中去尋找,如還找不到且實(shí)例化類沒有其他父類時(shí)凉倚,從實(shí)例化類的第一個(gè)父類的父類去找兼都,以此類推. ? ? ? ? ? ? ? ? ? 經(jīng)典類:深度繼承 多繼承時(shí),實(shí)例化的對象在調(diào)用模塊時(shí)先從實(shí)例化類本省去尋找稽寒,找 不到時(shí)扮碧,從實(shí)例化類繼承的第一個(gè)父類中去尋找,找不到直接在第一個(gè)父類中的父類繼續(xù)尋找杏糙,找不到在去實(shí)例化的第二個(gè)父類去尋找慎王,一次類推。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 在python3中 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 兩者都采用優(yōu)先廣度搜索的繼承方式GET POST PUT DELETE OPTIONS

常見狀態(tài)碼

200 請求成功 一般用于GET 和POST請求 301 永久移動 請求的資源已經(jīng)被永久的移動到新url宏侍,返回信息包括新的url赖淤,瀏覽器會自動定向到新url。今后任何新的請求都應(yīng)使用新的url代替谅河。 ? ? ? ? ? ? ? ? ? ? 302 臨時(shí)移動咱旱,與301類似确丢。但資源只是臨時(shí)移動⊥孪蓿客戶端應(yīng)繼續(xù)使用原有url ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 404 服務(wù)器無法根據(jù)客戶端的請求找到資源(網(wǎng)頁)鲜侥。該頁面可以自定義 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 405 客戶端請求中的方法被禁止????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 500 服務(wù)器內(nèi)部錯(cuò)誤,無法完成請求

django的csrf防護(hù)在中間鍵中執(zhí)行 執(zhí)行于process_view階段

轉(zhuǎn)換器的本質(zhì)就是正則 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 框架的作用是提供路由和視圖 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? .cfg .ini .config 都屬于配置文件

配置參數(shù)

1 在程序中加載配置文件 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? from flask import Flask ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? app = Flask(__name__) __name__:表示當(dāng)前的模塊名字? 創(chuàng)建Flask對象诸典,F(xiàn)lask會以傳入模塊的位置當(dāng)作家目錄 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? xxxxxxx

app.config.from_pyfile('xxxxx')

xxxxxx

2 類方式配置

xxxxxx

class Config(object):

DEBUG = True

app.config.from_object(Config)

3 直接操作配置

直接操作適用于參數(shù)較少的場景描函,config本質(zhì)其實(shí)就是一個(gè)字典

x'x'x'x'xx

app.config["DEBUG"] = True

xxxxxxx

4 對象上配置

xxxxx

app.debug = True

xxxxx

5 參數(shù)傳入配置

if __name__ == '__main__':

app.run(debug=True) #這個(gè)括號中只允許用 debug,host,port這三個(gè)參數(shù)

去配置參數(shù)

想在視圖函數(shù)中,把配置參數(shù)取到并使用

xxxxx

@app.route('/')

def abc():

? ? print(app.config.get('TEST')) #如果能拿到app對象狐粱,就可以通過app取自定義的配置參數(shù)

? ? print(current_app.config.get('TEST')) #如果拿不到舀寓,可以通過current_app這個(gè)app的

代理人拿到

? ? return xxxxx

app.config["DEBUG"] = True

app.config["TEST"] = 'test'

支持外部訪問

我們修改調(diào)用run()的方法使我們的服務(wù)器公開可用

app.run(host='0.0.0.0',port=5000) #0.0.0.0代表任何能代表這臺機(jī)器的地址都可以訪

路由

就是我們在瀏覽器輸入地址后,后臺進(jìn)行匹配肌蜻,如果匹配上互墓,則執(zhí)行此視圖函數(shù)并返回內(nèi)容

Flask用一個(gè)叫route()的裝飾器進(jìn)行裝飾到視圖函數(shù)上? 一個(gè)視圖函數(shù)上可以有多個(gè)裝飾器

from flask import Flask

app = Flask(__name__)

@app.route('/')? #路由

def index():

? ? return 'my index !'

xxxxxx

重定向

重定向時(shí)網(wǎng)站比較常用的地址跳轉(zhuǎn),比如我們在網(wǎng)站登陸后蒋搜,需要重新跳轉(zhuǎn)到首頁轰豆,這個(gè)

功能我們就可以用到重定向

from flask imprort redirect(用于重定向),url_for(參數(shù)時(shí)視圖函數(shù)的名字,它會根據(jù)函數(shù)的名字

找到裝飾器視圖的路由)

from flask import Flask

from flask import redirect,url_for

app = Flask(__name__)

@app.route('/')

def index():

? ? return 'my index!'

@app.route('/center')

def center():

? ? return redirect(url_for('index')) #括號中一定要是目標(biāo)函數(shù)的函數(shù)名


請求方式

常用的請求方式有

GET 獲取資源

POST 新增資源

PUSH 更新資源

DELETE 刪除資源

OPTIONS 詢問支持方法

@app.route('/login',methods=['POST','GET'......])

此時(shí)如果用不支持的方法去訪問的話會報(bào)405


flask中轉(zhuǎn)換器用來獲取url中的傳入的參數(shù)


FLask轉(zhuǎn)換器

default 接受字符串齿诞,默認(rèn)轉(zhuǎn)換器? 格式化時(shí)用%d

string 接受字符串,跟默認(rèn)一樣 格式化時(shí)用%d

int 接受整數(shù) 格式化時(shí)用%d

float 同int骂租,但只接受浮點(diǎn)數(shù) 格式化時(shí)用%f

path 和默認(rèn)的相似祷杈,但可以接受'/'且不能以'/'開頭

example:

from flask import Flask

app = Flask(__name__) #將該文件所有路徑設(shè)位主目錄

@app.route('/center/<int:uid>') #代表個(gè)人中心頁

def center(uid): #視圖函數(shù)

return 'xxxxxx %d' %d uid

if __name__=='__main__';

app.run()


自定義轉(zhuǎn)換器

強(qiáng)化轉(zhuǎn)換器的功能,使其能完成復(fù)雜的任務(wù)

.......

from werkzeug.routing import BaseConverter

通過分析源碼得知轉(zhuǎn)換器都繼承自BaseConverter

所以我們需要寫個(gè)類來繼承BaseConverter

class MyConverter(BaseConverter):

def __init__(self,map): #重寫父類init方法

? ? super().__init__(map) 調(diào)用父類init方法

? ? self.regex = r'\d{5,10}'? #轉(zhuǎn)換器的核心正則 正則可以寫成參數(shù)渗饮,用傳參的方式

引入正則但汞,這樣可以使代碼更加靈活

app.url_map.converters['re'] = MyConverter # 注冊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市互站,隨后出現(xiàn)的幾起案子私蕾,更是在濱河造成了極大的恐慌,老刑警劉巖胡桃,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踩叭,死亡現(xiàn)場離奇詭異,居然都是意外死亡翠胰,警方通過查閱死者的電腦和手機(jī)容贝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來之景,“玉大人斤富,你說我怎么就攤上這事《凸罚” “怎么了满力?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵焕参,是天一觀的道長。 經(jīng)常有香客問我油额,道長叠纷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任悔耘,我火速辦了婚禮讲岁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘衬以。我一直安慰自己缓艳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布看峻。 她就那樣靜靜地躺著阶淘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪互妓。 梳的紋絲不亂的頭發(fā)上溪窒,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天,我揣著相機(jī)與錄音冯勉,去河邊找鬼澈蚌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛灼狰,可吹牛的內(nèi)容都是我干的宛瞄。 我是一名探鬼主播,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼交胚,長吁一口氣:“原來是場噩夢啊……” “哼份汗!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蝴簇,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤杯活,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后熬词,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旁钧,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年互拾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了均践。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,161評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡摩幔,死狀恐怖彤委,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情或衡,我是刑警寧澤焦影,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布车遂,位于F島的核電站,受9級特大地震影響斯辰,放射性物質(zhì)發(fā)生泄漏舶担。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一彬呻、第九天 我趴在偏房一處隱蔽的房頂上張望衣陶。 院中可真熱鬧,春花似錦闸氮、人聲如沸剪况。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽译断。三九已至,卻和暖如春或悲,著一層夾襖步出監(jiān)牢的瞬間孙咪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工巡语, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留翎蹈,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓男公,卻偏偏與公主長得像杨蛋,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子理澎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評論 2 344