使用帮助程序类构建Flask应用程序

时间:2015-12-21 22:13:49

标签: python flask

为了简化__init__.py主模块,我想将帮助器功能推送到不同的文件/类。这需要在初始化类时传递许多flask扩展实例,这似乎是不优雅的。我目前的结构如下:

__ INIT __ PY:

from flask import Flask, render_template,request    
from flask.ext.sqlalchemy import SQLAlchemy
from flask_mail import Mail
from FEUtils import FEUtils

# .. and more imports of various extensions ..

db = SQLAlchemy()
app = Flask(__name__)
db.init_app(app) 
mail = Mail(app)

fe_utils = FEUtils(db,mail,app.config)

# Flask code..

if __name__ == '__main__':
    app.run()

和FEUtils.py:

from models import User

class FEUtils(object):

    def __init__(self,db,mail,config):
        self.session = db.session # to access database
        self.mail = mail          # to send emails
        self.config = config      # to access app config dictionary


    def count_users(self): # example helper method
        return self.session.query(User).count()

这一切都很好,但看起来很麻烦。我希望辅助类从主模块继承各种扩展实例,并且能够从辅助类中访问flask配置参数,而不必在实例化辅助类时传递每个参数。

不同的问题是,有没有办法让helper类表现得好像每个方法都以优雅的方式在主模块中定义?

0 个答案:

没有答案