成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Flask-current_app這個(gè)坑

cc17 / 1929人閱讀

摘要:今天同學(xué)問(wèn)了我一個(gè)關(guān)于的問(wèn)題,我之前也看了一下慕課七月老師講的項(xiàng)目,正好碰到過(guò),所以也給大家分享一下。之前在寫(xiě)項(xiàng)目的時(shí)候也有用到,老師講的是代表了當(dāng)前項(xiàng)目的,當(dāng)然寫(xiě)完項(xiàng)目也沒(méi)有任何問(wèn)題,但是通過(guò)這次學(xué)習(xí),我才發(fā)現(xiàn),好坑吶,真怕不用就忘了。

今天同學(xué)問(wèn)了我一個(gè)關(guān)于current_app的問(wèn)題,我之前也看了一下慕課七月老師講的flask項(xiàng)目,正好碰到過(guò),所以也給大家分享一下。
【current_app】
之前在寫(xiě)項(xiàng)目的時(shí)候也有用到current_app,老師講的是代表了當(dāng)前項(xiàng)目的app,當(dāng)然寫(xiě)完項(xiàng)目也沒(méi)有任何問(wèn)題,但是通過(guò)這次學(xué)習(xí),我才發(fā)現(xiàn),好坑吶,真怕不用就忘了。大家看一下下面這段代碼

from flask import Flask, current_app

app = Flask(__name__)
print(app)    #輸出結(jié)果:

相信大家對(duì)這段代碼是沒(méi)有問(wèn)題的,也不知道有啥作用,那么請(qǐng)看下面這段代碼

from flask import Flask, current_app

app = Flask(__name__)
print(app)    #輸出結(jié)果:
app2 = current_app
print(app2)    #輸出結(jié)果:竟然報(bào)了一大堆的錯(cuò)誤

錯(cuò)誤信息是這樣子的:RuntimeError: Working outside of application context.意思是說(shuō)我們?cè)趹?yīng)用上下文之外運(yùn)行的,這究竟是咋回事,請(qǐng)看下面這幅圖


原來(lái)在flask內(nèi)部維護(hù)者兩個(gè)線程隔離的棧,current_app指向了AppContext(應(yīng)用上下文)中的棧頂,request指向了RequestContext(請(qǐng)求上下文)棧頂,當(dāng)請(qǐng)求進(jìn)入的時(shí)候,Request對(duì)象被壓入棧,從而request有了指向處理請(qǐng)求,接下來(lái)會(huì)判斷AppContext棧頂是否為空,若為空則向棧中壓入一個(gè)AppContext對(duì)象,即app,從而current_app就有了指向,所以我們?cè)陧?xiàng)目中使用是沒(méi)有報(bào)錯(cuò)的,而我們上面的代碼不是在請(qǐng)求中實(shí)現(xiàn)的所以AppContext棧頂為空,current_app并沒(méi)有指向一個(gè)AppContext對(duì)象,怎樣解決呢?

from flask import Flask, current_app

app = Flask(__name__)
print(app)    #輸出結(jié)果:
with app.app_context():
    app2 = current_app
    print(app2)    #輸出結(jié)果:

這里我們使用了with,其app_context()返回一個(gè)AppContext對(duì)象,而其又實(shí)現(xiàn)了__enter__與__exit__分別讓AppContext對(duì)象,即app入棧和出棧,完成了此操作。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42953.html

相關(guān)文章

  • 又被事件冒泡了一把,這次要徹底弄懂瀏覽器的事件流

    摘要:事件冒泡一個(gè)簡(jiǎn)單,但是坑了我無(wú)數(shù)回的知識(shí)點(diǎn)與的交互通過(guò)事件來(lái)實(shí)現(xiàn)。而瀏覽器的事件流是一個(gè)非常重要的概念。不去討論那些古老的瀏覽器有事件捕獲與事件冒泡的爭(zhēng)議,只需要知道在中規(guī)定的事件流包括了三個(gè)部分,事件捕獲階段處于目標(biāo)階段事件冒泡階段。 打算封裝一個(gè)彈窗組件,做的時(shí)候忘記了考慮事件冒泡的因素,結(jié)果被坑得不要不要的。為了解決自己的問(wèn)題,去查閱了不少資料,把事件流相關(guān)的知識(shí)都給總結(jié)一下。 ...

    Ocean 評(píng)論0 收藏0
  • 又被事件冒泡了一把,這次要徹底弄懂瀏覽器的事件流

    摘要:事件冒泡一個(gè)簡(jiǎn)單,但是坑了我無(wú)數(shù)回的知識(shí)點(diǎn)與的交互通過(guò)事件來(lái)實(shí)現(xiàn)。而瀏覽器的事件流是一個(gè)非常重要的概念。不去討論那些古老的瀏覽器有事件捕獲與事件冒泡的爭(zhēng)議,只需要知道在中規(guī)定的事件流包括了三個(gè)部分,事件捕獲階段處于目標(biāo)階段事件冒泡階段。 打算封裝一個(gè)彈窗組件,做的時(shí)候忘記了考慮事件冒泡的因素,結(jié)果被坑得不要不要的。為了解決自己的問(wèn)題,去查閱了不少資料,把事件流相關(guān)的知識(shí)都給總結(jié)一下。 ...

    TIGERB 評(píng)論0 收藏0
  • Docker初體驗(yàn)——踩過(guò)的那些!

    摘要:原因其實(shí)這個(gè)報(bào)錯(cuò)不需要下載最新文件,而是文件沒(méi)有放到正確的位置。重啟電腦后按或進(jìn)入界面不同主板型號(hào)進(jìn)入所需按鍵不同。端口映射環(huán)境下可能不存在這個(gè)問(wèn)題坑在下部署了應(yīng)用服務(wù)并進(jìn)行了端口映射。 2018?年?3?月?6?日 Docker安裝 環(huán)境:windows7 安裝包:DockerToolbox-17.10.0-ce.exe (下載地址:http://mirrors.aliyun.co...

    Jrain 評(píng)論0 收藏0
  • 快速排序填口訣

    摘要:直接默寫(xiě)出快速排序還是有一定難度的,所以一定要弄清楚原理再去記憶而不是去硬背??焖倥判蚴怯谀晏岢龅囊环N劃分交換排序。 快速排序由于排序效率在同為O(N*logN)的幾種排序方法中效率較高,因此經(jīng)常被采用,再加上快速排序思想----分治法也確實(shí)實(shí)用,因此在很多筆試面試中出現(xiàn)的幾率很高。 直接默寫(xiě)出快速排序還是有一定難度的,所以一定要弄清楚原理再去記憶而不是去硬背。 快速排序是C.R.A....

    Ocean 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<