创建应用后更改Flask配置

时间:2015-09-23 15:50:42

标签: flask jinja2 livereload flask-script

我正在使用Livereload + Flask + Flask SOcketIO + Flask脚本。 问题是SocketIO需要gevent-socketio服务器。哪个都是livereload不是。别误会我的意思,我不想解决这个问题。我只运行livereload做一些css / sass / js工作,所以没关系。

但每次客户端试图连接到socketIO服务器时,异常都会引起我的注意。所以我认为我可以禁用javascript,但我的app主要依赖于角度来异步渲染指令,因此页面上没有标签可供我切换样式。然后我意识到我可以写一个配置属性,所以当我加载页面时,Jinja2将它作为一个javascript变量提供,我不会加载特定的socket-io js文件,以防它被设置为False。我试过这个。

在config.py上设置:

class Config:
    LIVERELOAD = False

我使用FLask-Script

运行livereload服务器
class liveReloadServer(Command):
    """prints hello world"""
    def run(self):
        with app.app_context():
            server = Server(app.wsgi_app)
            Config.LIVERELOAD = 'True'
            server.serve(port=8080)

将config属性传递给javascript端

var LIVERELOAD = "{{ config['LIVERELOAD'] }}";

但这不起作用(LIVERELOAD总是显示True)因为我在Config类已插入Flask应用程序对象后设置属性。还有其他方法吗?

1 个答案:

答案 0 :(得分:2)

您需要设置Flask应用的配置,该配置与您创建的任何自定义对象无关。

app.config['LIVERELOAD'] = True