2017-03-26 22 views
0

我开始使用Flask工厂应用程序模式后,对配置和导入感到困惑。使用Flask Factory应用程序配置电子邮件令牌create_app

我创造与#应用程序的功能create_app/初始化的.py 应用我有设定开发/测试/生产变量一个配置文件,并与另一个配置文件一个实例文件夹。

def create_app(config_name): 
    app=Flask(__name__, instance_relative_config=True) 
    app.config.from_object(app_config[config_name]) 
    app.config.from_pyfile('config.py') 
    etc... 
    return app 

我用的蓝图,并在#应用程序/认证/ views.py 我试图建立电子邮件确认使用URLSafeTimedSerializer令牌......

from itsdangerous import URLSafeTimedSerializer 

@auth.route('/register', methods=['GET','POST']) 
def register(): 
    ts = URLSafeTimedSerializer(app.config['SECRET_KEY']) 
    token = ts.dumps(self.email, salt='email-confirm-key') 
    etc... 

现在我的问题验证视图是,我的变量'ts'需要app.config ['SECRET_KEY']集。但是我无法定义应用程序变量(如所有在线教程中所示)。我得到一个错误,当我尝试导入...(在#应用程序/认证/ views.py)

from .. import app 

,当我尝试导入像...

from .. import create_app 

有人可以大放异彩浅谈如何在烧瓶应用程序工厂create_app之外使用'app'和app.config初始化模块?

希望你能理解我的问题。

回答

1

在这种情况下,你应该使用Flask.current_app

from flask import current_app 

... 

ts = URLSafeTimedSerializer(current_app.config['SECRET_KEY']) 

the documentation

flask.current_app

指向应用程序处理请求。此 对于想要支持多个应用程序 并行运行的扩展很有用。这由应用程序上下文和 而不是请求上下文驱动,因此您可以使用app_context()方法更改此代理 的值。

This link ASO说明使用current_app来访问应用程序的配置有关瓶应用工厂方法的进一步细节,尤其如此。

+0

非常感谢你马特,现在工作 –

相关问题