我有复杂的烧瓶应用程序,有几个由werkzeug中间件调度的Flask实例.在这种情况下,我有两个问题,实际上并没有与url_for相关,而是与烧瓶上下文管理有关.
1)如何从一个应用程序创建URL到另一个应用程序?
2)主要的 - 如何为没有app_context的特定应用程序创建URL.例如,我需要在导入时或从芹菜任务创建一些URL.我试图在所有应用程序实例上做包装并重新定义url_for之类的
def url_for(self, *args, **kwargs):
with self.app.app_context():
return url_for(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
但刚刚收到以下错误"应用程序无法为请求独立URL生成创建URL适配器.您可以通过设置SERVER_NAME配置变量来解决此问题." 有什么建议?
更新:我的第二个问题的解决方案是正确的,只需要添加SERVER_NAME,但第一个仍然是打开的
我最终为每个应用程序创建了单独的 url 生成器
absolute_url_adapter = app.url_map.bind_to_environ({
'wsgi.url_scheme': 'http',
'HTTP_HOST': app.config['SERVER_NAME'],
'SCRIPT_NAME': app.url_prefix,
'REQUEST_METHOD': 'GET',
})
Run Code Online (Sandbox Code Playgroud)
url_prefix - 是 url,调度程序通过它调度请求
然后在每个应用程序中你都这样使用它
absolute_url_adapter.build('main.main', force_external=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
766 次 |
| 最近记录: |