创建应用程序后更改 Flask 配置

Change Flask config after app creation

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

但是每次客户端尝试连接到 socketIO 服务器时抛出的异常让我很困扰。所以我想我可以禁用 javascript,但我的应用程序主要依赖 angular 来异步呈现指令,因此页面上没有标签供我切换样式。然后我意识到我可以写一个配置 属性 所以当我加载页面时 Jinja2 将它作为一个 javascript 变量提供并且我不会加载特定的 socket-io js 文件以防它被设置为 False.I 已经试过了。

设置为 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)

将配置 属性 传递给 javascript 端

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

但这不起作用(LIVERELOAD 始终显示 True)因为我在 Config class 已经插入 Flask 应用程序 object.Is 之后设置 属性 另一种方式?

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

app.config['LIVERELOAD'] = True