摘要:今天同學問了我一個關(guān)于的問題,我之前也看了一下慕課七月老師講的項目,正好碰到過,所以也給大家分享一下。之前在寫項目的時候也有用到,老師講的是代表了當前項目的,當然寫完項目也沒有任何問題,但是通過這次學習,我才發(fā)現(xiàn),好坑吶,真怕不用就忘了。
今天同學問了我一個關(guān)于current_app的問題,我之前也看了一下慕課七月老師講的flask項目,正好碰到過,所以也給大家分享一下。
【current_app】
之前在寫項目的時候也有用到current_app,老師講的是代表了當前項目的app,當然寫完項目也沒有任何問題,但是通過這次學習,我才發(fā)現(xiàn),好坑吶,真怕不用就忘了。大家看一下下面這段代碼
from flask import Flask, current_app app = Flask(__name__) print(app) #輸出結(jié)果:
相信大家對這段代碼是沒有問題的,也不知道有啥作用,那么請看下面這段代碼
from flask import Flask, current_app app = Flask(__name__) print(app) #輸出結(jié)果:app2 = current_app print(app2) #輸出結(jié)果:竟然報了一大堆的錯誤
錯誤信息是這樣子的:RuntimeError: Working outside of application context.意思是說我們在應(yīng)用上下文之外運行的,這究竟是咋回事,請看下面這幅圖
原來在flask內(nèi)部維護者兩個線程隔離的棧,current_app指向了AppContext(應(yīng)用上下文)中的棧頂,request指向了RequestContext(請求上下文)棧頂,當請求進入的時候,Request對象被壓入棧,從而request有了指向處理請求,接下來會判斷AppContext棧頂是否為空,若為空則向棧中壓入一個AppContext對象,即app,從而current_app就有了指向,所以我們在項目中使用是沒有報錯的,而我們上面的代碼不是在請求中實現(xiàn)的所以AppContext棧頂為空,current_app并沒有指向一個AppContext對象,怎樣解決呢?
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()返回一個AppContext對象,而其又實現(xiàn)了__enter__與__exit__分別讓AppContext對象,即app入棧和出棧,完成了此操作。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/42953.html
摘要:事件冒泡一個簡單,但是坑了我無數(shù)回的知識點與的交互通過事件來實現(xiàn)。而瀏覽器的事件流是一個非常重要的概念。不去討論那些古老的瀏覽器有事件捕獲與事件冒泡的爭議,只需要知道在中規(guī)定的事件流包括了三個部分,事件捕獲階段處于目標階段事件冒泡階段。 打算封裝一個彈窗組件,做的時候忘記了考慮事件冒泡的因素,結(jié)果被坑得不要不要的。為了解決自己的問題,去查閱了不少資料,把事件流相關(guān)的知識都給總結(jié)一下。 ...
摘要:事件冒泡一個簡單,但是坑了我無數(shù)回的知識點與的交互通過事件來實現(xiàn)。而瀏覽器的事件流是一個非常重要的概念。不去討論那些古老的瀏覽器有事件捕獲與事件冒泡的爭議,只需要知道在中規(guī)定的事件流包括了三個部分,事件捕獲階段處于目標階段事件冒泡階段。 打算封裝一個彈窗組件,做的時候忘記了考慮事件冒泡的因素,結(jié)果被坑得不要不要的。為了解決自己的問題,去查閱了不少資料,把事件流相關(guān)的知識都給總結(jié)一下。 ...
摘要:原因其實這個報錯不需要下載最新文件,而是文件沒有放到正確的位置。重啟電腦后按或進入界面不同主板型號進入所需按鍵不同。端口映射環(huán)境下可能不存在這個問題坑在下部署了應(yīng)用服務(wù)并進行了端口映射。 2018?年?3?月?6?日 Docker安裝 環(huán)境:windows7 安裝包:DockerToolbox-17.10.0-ce.exe (下載地址:http://mirrors.aliyun.co...
閱讀 984·2021-11-24 09:39
閱讀 2185·2021-11-16 11:54
閱讀 2077·2021-11-11 17:22
閱讀 2372·2021-09-30 09:55
閱讀 3591·2021-08-12 13:22
閱讀 1626·2019-08-30 15:44
閱讀 1168·2019-08-29 12:12
閱讀 3263·2019-08-27 10:58