Flask筆記

一蹦狂、Flask自動(dòng)重啟:

每次代碼修改后,必須保存后嗦明,重啟服務(wù)器笼沥,然后代碼才可以生效,這是python開(kāi)發(fā)服務(wù)器特點(diǎn)招狸,而想php開(kāi)發(fā)敬拓,就不需要每次重啟服務(wù)器

解決方案:
1.寫(xiě)腳本邻薯,自動(dòng)監(jiān)聽(tīng)文件的改動(dòng)裙戏,如果有改動(dòng),就自動(dòng)重啟服務(wù)(太麻煩)
2.flask內(nèi)置了一個(gè)功能厕诡,可以自動(dòng)重啟服務(wù)器累榜,只需要將flask的debug模式打開(kāi)。代碼如下:

app.run(debug=True)

二灵嫌、flask 路由的唯一url 特性:

@app.route('/hello/')
def hello():
    return "hello" 

當(dāng)訪問(wèn) “/hello” 后面不帶斜杠的地址壹罚,flask會(huì)將 “/hello” 重定向到 “/hello/” 目錄下(這里重定向是發(fā)了2個(gè)請(qǐng)求,第一個(gè)是“/hello”,第二個(gè)是“/hello/”)寿羞,這樣就兼容了用戶的錯(cuò)誤輸入

當(dāng)訪問(wèn)“/hello/” 帶后面斜杠的地址猖凛,就直接訪問(wèn)“/hello/” 目錄。

flask這樣設(shè)置重定向的意義:保證了url唯一性绪穆,不能因?yàn)楹竺鎺Щ虿粠备鼙嬗荆投x成2個(gè)地址,但實(shí)質(zhì)他們內(nèi)容是一致的玖院,這樣導(dǎo)致爬蟲(chóng)反復(fù)爬取重復(fù)內(nèi)容菠红,不利于SEO。

三难菌、flask 路由注冊(cè)的兩種方法:

方式一:

@app.route('/hello/')
def hello():
    return "hello" 

方式二:

def hello():
    return "hello" 
app.add_url_rule('/hello', view_func=hello)

兩種方式的區(qū)別试溯,其實(shí)方式一,@app.route 里面就是調(diào)用了app.add_url_rule()這個(gè)方法(通過(guò)command + 點(diǎn)擊郊酒,跳轉(zhuǎn)到方法定義的地方)遇绞,只是方式一封裝了一層裝飾器键袱,方便我們調(diào)用。

四摹闽、app.run 參數(shù)和flask其他配置文件

app.run(debug=True) //如果只有這一個(gè)參數(shù)杠纵,是只能被本機(jī)的localhost 訪問(wèn),連局域網(wǎng)里面的其他機(jī)器都是不能訪問(wèn)的
app.run(host='0.0.0.0', debug=True钩骇,port=81)  //host 指定IP地址比藻。0.0.0.0接受外網(wǎng)的訪問(wèn) , 自定義端口

單獨(dú)弄一個(gè)config.py配置文件,方便后期線上版本管理倘屹。

//config.py  配置文件里面的參數(shù)常量银亲,都寫(xiě)成大寫(xiě)
DEBUG = True
//app.config.from_object(‘模塊路徑’),config.py就在當(dāng)前目錄下,所以直接寫(xiě)纽匙。
app.config.from_object('config')
app.run(host='0.0.0.0', debug=app.config['DEBUG']务蝠,port=81)
注意:app.config是一個(gè)字典,里面有一個(gè)默認(rèn)參數(shù)DEBUG = False,所以如果要覆蓋掉原來(lái)默認(rèn)DEBUG值烛缔,必須把配置文件的參數(shù)設(shè)置成DEBUG馏段,全部大寫(xiě)。

五践瓷、if __ name __作用

if __name__ == '__main__':
  app.run(host='0.0.0.0', debug=app.config['DEBUG']院喜,port=81)

這句話作用:
1.如果本文件不是flask入口文件,而且被其他文件作為模塊導(dǎo)入晕翠,那么后面的語(yǔ)句不會(huì)被執(zhí)行喷舀。
2.在開(kāi)發(fā)環(huán)境,會(huì)啟動(dòng)一個(gè)Flask簡(jiǎn)單的服務(wù)器淋肾,真實(shí)的生產(chǎn)線上環(huán)境是用nginx + uwsgi 硫麻。nginx接受瀏覽器傳過(guò)來(lái)請(qǐng)求,然后轉(zhuǎn)發(fā)給uwsgi這個(gè)web服務(wù)器樊卓。線上環(huán)境拿愧,F(xiàn)lask是通過(guò)uwsgi加載run.py這個(gè)模塊來(lái)啟動(dòng)的,而不是手動(dòng)的python run.py來(lái)啟動(dòng)的碌尔,在生產(chǎn)環(huán)境浇辜,run.py就不再是flask入口文件,而是被加載進(jìn)來(lái)的七扰,所以如果不寫(xiě)第一行if的判讀的話奢赂,在生產(chǎn)環(huán)境 app.run( 。 颈走。 膳灶。)這句代碼根本不會(huì)被執(zhí)行的。如果沒(méi)有if判斷,那么app.run就會(huì)啟動(dòng)轧钓,就意味著這個(gè)啟動(dòng)了Flask自帶的服務(wù)器序厉。啟動(dòng)了2個(gè)服務(wù)器。

六毕箍、視圖函數(shù)和普通函數(shù)的區(qū)別

//視圖函數(shù)hello
@app.route('/hello/')
def hello():
    return '<html> </html>'  //訪問(wèn)結(jié)果是空白

//普通函數(shù)world
def world():
  return "world"

視圖函數(shù)返回信息除了簡(jiǎn)單文本外弛房,還有一些附加信息
status code 201 / 404 等等
content-type 默認(rèn)值text/html ,告訴客戶端如何解析我們返回的內(nèi)容而柑,這就解釋了上述訪問(wèn)/hello就是什么內(nèi)容看不到文捶,如果<html> test </html> ,那就顯示了test內(nèi)容

七媒咳、視圖函數(shù)返回的是什么

服務(wù)器返回給客戶端基本就是純文本粹排,或者h(yuǎn)tml,或者json 形式的api涩澡,但視圖函數(shù)返回內(nèi)容的就是字符串顽耳,只是設(shè)置了content-type導(dǎo)致返回結(jié)果不一樣

//text/plain  純文本  
//application/json  json數(shù)據(jù)
//text/html   html數(shù)據(jù)

@app.route('/world2/')
def world2():
    header = {
        'content-type':'text/plain'
    }
    reponse = make_response('<html></html>',201)
    reponse.headers = header
    return reponse
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市妙同,隨后出現(xiàn)的幾起案子射富,更是在濱河造成了極大的恐慌,老刑警劉巖粥帚,帶你破解...
    沈念sama閱讀 217,277評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胰耗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡茎辐,警方通過(guò)查閱死者的電腦和手機(jī)宪郊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門掂恕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)拖陆,“玉大人,你說(shuō)我怎么就攤上這事懊亡∫绬” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,624評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵店枣,是天一觀的道長(zhǎng)速警。 經(jīng)常有香客問(wèn)我,道長(zhǎng)鸯两,這世上最難降的妖魔是什么闷旧? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,356評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮钧唐,結(jié)果婚禮上忙灼,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好该园,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布酸舍。 她就那樣靜靜地躺著,像睡著了一般里初。 火紅的嫁衣襯著肌膚如雪啃勉。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,292評(píng)論 1 301
  • 那天双妨,我揣著相機(jī)與錄音淮阐,去河邊找鬼。 笑死刁品,一個(gè)胖子當(dāng)著我的面吹牛枝嘶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播哑诊,決...
    沈念sama閱讀 40,135評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼群扶,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了镀裤?” 一聲冷哼從身側(cè)響起竞阐,我...
    開(kāi)封第一講書(shū)人閱讀 38,992評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎暑劝,沒(méi)想到半個(gè)月后骆莹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡担猛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評(píng)論 3 334
  • 正文 我和宋清朗相戀三年幕垦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片傅联。...
    茶點(diǎn)故事閱讀 39,785評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡先改,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蒸走,到底是詐尸還是另有隱情仇奶,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評(píng)論 5 345
  • 正文 年R本政府宣布比驻,位于F島的核電站该溯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏别惦。R本人自食惡果不足惜狈茉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望掸掸。 院中可真熱鬧氯庆,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,723評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至粒督,卻和暖如春陪竿,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屠橄。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,858評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工族跛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锐墙。 一個(gè)月前我還...
    沈念sama閱讀 47,891評(píng)論 2 370
  • 正文 我出身青樓礁哄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親溪北。 傳聞我的和親對(duì)象是個(gè)殘疾皇子桐绒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容