zoukankan      html  css  js  c++  java
  • 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传入方式是因为避免循环导包, 思路是这样,实现方式自己把握好了.

    然后问题就可以解决了.

  • 相关阅读:
    类加载机制与jdk智能调优命令
    初认Redis
    Spring-Cloud组件eureka
    SpringBoot入门知识
    SpringCloud
    java内存模型
    Redis
    Vue
    Nginx
    Linux系统
  • 原文地址:https://www.cnblogs.com/haiton/p/11101476.html
Copyright © 2011-2022 走看看