python - 在两个应用程序之间使用 url_for

标签 python flask werkzeug

我喜欢很多约定 Overholt example使用过,但遇到了特定问题。

我使用 werkzeug.wsgi 中的 DispatcherMiddleware 对象设置了两个应用程序:

from werkzeug.wsgi import DispatcherMiddleware
from myapp import api, frontend

application = DispatcherMiddleware(frontend.create_app(), {
    '/api': api.create_app()
})

这很好用;终点都在那里。检查 application.app.url_map 显示前端的映射,application.mounts['/api'].url_map 正确显示 api 的映射。

我遇到的问题是我想在我的前端模板中为 api 中的方法使用 url_for(),但还没有找到实现该方法的方法。对 URL 路径进行硬编码是可行的,但如果我想移动内容,稍后会导致问题。

最佳答案

你可以做的是向你的后端添加一个新的路由,比如说 /api/route-map 它会吐出路由的 map (字典/JSON)(你可以使用 url_for 来生成 map )并从你的前端点击这条路线来获得动态路线图,你可以在你的前端模板中使用你的自定义 jinja2 函数(你可以创建为如下所示)。

def api_url_for(route_fn_string):
    """
    This is just boilerplate code. Please do some checking here.
    '"""
    return route_map[route_fn_string]


app.jinja_env.globals.update(api_url_for=api_url_for)

现在您可以在您的 jinja2 模板中执行 {{api_url_for('update')}} 以获取其实际路径。

如果您将这两个应用程序放在同一台服务器上,那么您可以简单地将路由映射共享为全局或通过 getter 函数。

关于python - 在两个应用程序之间使用 url_for,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30111146/

相关文章:

python - 具有基于方法的端点的 Werkzeug URL 映射仅返回不允许的方法

python - 如何在 Keras 中将输入拆分为不同的 channel

python - django 静态文件错误

python - Flask 博客文章广泛的控件 - 如何控制文本格式、添加链接、图片等的能力

python - 如何在Python Flask中实现自定义json格式化程序来舍入 float ?

python - Flask Python,试图将列表或字典返回给 Ajax 调用

python - 嵌入基于Python的基于Web的外壳(Werkzeug?)

python - 强制即时 matplotlib 图形更新

python - 在python中使用正则表达式提取括号内的单词

python - 如何使用 werkzeug 或其他 python 请求框架制作非常简单的 http 代理?