目前,我有一个应用程序工厂,如下所示:
from flask import Flask
from flask.ext.bootstrap import Bootstrap
from flask.ext.cache import Cache
from config import config
bootstrap = Bootstrap()
cache = Cache(config={'CACHE_TYPE': 'simple'})
def create_app(environment):
app = Flask(__name__)
app.config.from_object(config[environment])
bootstrap.init_app(app)
cache.init_app(app)
from main import main as base_blueprint
from charts.statistics import statistics
app.register_blueprint(base_blueprint)
app.register_blueprint(statistics, url_prefix='/statistics')
return app
遵循这种模式,我有我的统计蓝图。 __init__.py
目录中的charts/
如下:
from flask import Blueprint
statistics = Blueprint('statistics', __name__)
from . import statistics_charts
... statistics_charts.py
只有以下内容
@statistics.route('/summary_chart')
@cache.memoize(timeout=5000)
def summary_chart():
# ...
return jsonify(my_data)
然而,当我尝试运行它时,它经常给我一个名称错误,说从未定义缓存。这适用于其他应用程序,它们只是一个文件,但似乎不适用于应用程序工厂和蓝图样式。
缓存在蓝图中必须做些什么?
答案 0 :(得分:1)
将两条cache
行移至statistics_charts.py
文件。然后它会抱怨statistics
没有被定义,但这是一个简单的解决方法。
答案 1 :(得分:1)
您需要将以下import语句添加到蓝图的顶部。
from . import cache