1

我正在使用 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 应用程序对象之后设置属性。还有其他方法吗?

4

1 回答 1

2

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

app.config['LIVERELOAD'] = True
于 2015-09-23T16:04:10.650 回答