2015-05-07 16 views
3

我喜欢使用Overholt example的很多约定,但遇到了一个特定的问题。在两个应用程序之间使用url_for

我有两个应用程序设置使用从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的映射。

我遇到的问题是我想在我的前端模板中使用url_for()用于api中的方法,但是还没有找到一种方法来完成这项工作。对URL路径进行硬编码是有效的,但如果我想移动它,则会在稍后导致问题。

+1

通过调度程序运行的应用程序彼此隔离。 – dirn

回答

0

你可以做什么是添加新的路由到后端,说/api/route-map它吐出来的是路线图(词典/ JSON)(可以使用url_for生成的地图),并从打这条路你前端获取动态路线图,您可以使用自定义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模板做得到它的实际路线。

如果您将这两个应用程序放在同一台服务器上,那么您可以简单地将路线图分享为全局或通过吸气功能。

相关问题