No application found. Either work inside a view function or push an application context.


flask報了這個錯,字面意思是說沒有應用上下文,字面給的解決意見是要么放置在一個視圖內,要么提供一個應用(flask)上下文.

查看文檔發現文檔給了個解決方案:

一個是通過app.app_context().push()來推入一個上下文,第二個是通過with上下文來確定作用在APP上下文區域內的代碼.

個人覺得還是通過裝飾器的方式來的方便和美觀,當然第二種方式也相當優美.

下面是我的解決方法:

1 def sqlalchemy_context(app):
2     def add_context(func):
3         @wraps(func)
4         def do_job(*args, **kwargs):
5             app.app_context().push()
6             result = func(*args,**kwargs)
7             return result
8         return do_job
9     return add_context

然后我使用數據庫的地方:

@sqlalchemy_context(APP)
def init_primary_key():
    Model.query.filter_by()
    ...

* 我APP傳入方式是因為避免循環導包, 思路是這樣,實現方式自己把握好了.

然后問題就可以解決了.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM