为了简化__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类表现得好像每个方法都以优雅的方式在主模块中定义?