从 Flask 中的配置更改静态文件夹

新手上路,请多包涵

有没有人尝试过这个 基于 flask 配置的静态文件夹代码 cnippet

编码:

 import flask
class MyFlask(flask.Flask):
    @property
    def static_folder(self):
        if self.config.get('STATIC_FOLDER') is not None:
            return os.path.join(self.root_path,
                self.config.get('STATIC_FOLDER'))
    @static_folder.setter
    def static_folder(self, value):
        self.config.get('STATIC_FOLDER') = value

# Now these are equivalent:
app = Flask(__name__, static_folder='foo')

app = MyFlask(__name__)
app.config['STATIC_FOLDER'] = 'foo'

就我而言,我抱怨这条线:

 self.config.get('STATIC_FOLDER') = value

错误信息: Can't assign to function call

有人如何从 Flask 中的 config.py 文件设置 static_folder 吗?

原文由 Nurjan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 576
2 个回答

我对那个片段一无所知,但是

some_function(...) = some_value

永远不是有效的 Python(Python 没有 左值)。它看起来像 config 有一个类似 dict 的界面,所以有问题的行可能只是

self.config['STATIC_FOLDER'] = value

可能是来自 setter 上方的 getter 定义的复制和粘贴错误。

原文由 Florian Brucker 发布,翻译遵循 CC BY-SA 3.0 许可协议

好的,我假设您出于某种原因想要使用静态文件夹的自定义路径。为了更好的应用程序模块化,我想做同样的事情。

这是我的应用程序文件夹结构:

 instance/
core/
  |_templates/
  |_static/
  |_views.py
run.py
config.py

如您所见,我的 static 文件夹位于 core 文件夹内。

run.py 中,您可以执行以下操作:

 app = Flask(__name__, static_url_path=None)

if __name__ == '__main__':
    app.config.from_object('config')

    # config file has STATIC_FOLDER='/core/static'
    app.static_url_path=app.config.get('STATIC_FOLDER')

    # set the absolute path to the static folder
    app.static_folder=app.root_path + app.static_url_path

    print(app.static_url_path)
    print(app.static_folder)

    app.run(
        host=app.config.get('HOST'),
        port=app.config.get('PORT'),
        threaded=True
        )

这就是我所做的,而且效果很好。我正在使用烧瓶 0.12。

原文由 mania_device 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题