2015-05-07 21 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模板做得到它的實際路線。

如果您將這兩個應用程序放在同一臺服務器上,那麼您可以簡單地將路線圖分享爲全局或通過吸氣功能。

相關問題