【问题标题】:Change Flask config after app creation创建应用程序后更改 Flask 配置
【发布时间】:2015-09-23 15:50:41
【问题描述】:

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

但是每次客户端尝试连接到socketIO服务器时抛出的异常让我很困扰。所以我想我可以禁用 javascript,但我的应用程序主要依赖 angular 来异步渲染指令,所以页面上没有标签让我能够切换样式。然后我意识到我可以编写一个配置属性,所以当我加载页面时 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)

将配置属性传递给javascript端

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

但这不起作用(LIVERELOAD 始终显示 True),因为我在 Config 类已经插入到 Flask 应用对象之后设置属性。还有其他方法吗?

【问题讨论】:

    标签: flask jinja2 livereload flask-script


    【解决方案1】:

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

    app.config['LIVERELOAD'] = True
    

    【讨论】:

      猜你喜欢
      • 2013-12-31
      • 2018-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多