gpt4 book ai didi

python - 如何从 Frozen-Flask 有条件导入relative_url_for

转载 作者:太空宇宙 更新时间:2023-11-03 17:55:16 27 4
gpt4 key购买 nike

我正在使用Flask创建一个网站我想使用 Frozen-Flask 卡住,而且还可以让网站上线。

我关注了the documentation仅在卡住网站时将 FREEZER_RELATIVE_URLS 配置选项设置为 True。此功能正确,在模板引擎中将 url_for 替换为 relative_url_for

仅当设置了配置选项时,如何才能在我的 Python 代码中使用 relative_url_for

我想我需要这样的东西:

if config['FREEZER_RELATIVE_URLS']:
from flask_frozen import relative_url_for as url_for
else:
from flask import url_for

但是,如果我尝试使用 views.py 中的其他导入来访问 flask.current_app.config ,则会收到错误:RuntimeError:在外部工作应用程序上下文

最佳答案

您正尝试在 View 之外访问 current_app,因此没有应用上下文可以告诉 Flask current_app 指向什么。创建一个辅助函数,在调用时选择要调用的 url 函数,而不是在导入时决定。

from flask import current_app, url_for as live_url_for
from flask_frozen import relative_url_for

def url_for(endpoint, **values):
if current_app.config['FREEZER_RELATIVE_URLS']:
return relative_url_for(endpoint, **values)

return live_url_for(endpoint, **values)

在 View 中使用此 url_for 帮助器,而不是其他两个函数。您还可以用此函数替换 Jinja 模板中使用的 url_for 函数。

# during app creation
from helpers import url_for
app.add_template_global(url_for)
app.context_processor(lambda: {'url_for': url_for})

关于python - 如何从 Frozen-Flask 有条件导入relative_url_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28542112/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com