【发布时间】:2018-05-13 05:09:24
【问题描述】:
我正在将一个多租户网络应用程序移植到 Python/Tornado。假设每个租户站点有两个页面:“/foo”和“/bar”。到目前为止,使用 Handlers 很容易。
但是,租户可以选择要在其主页上显示的内容(“/”)。这可能是来自 /foo 或 /bar 的内容,但不应重定向最终用户。事实上,租户可以从他们的站点中选择任何页面并将其设为主页。
在我习惯的 PHP 框架中,这是通过内部路由逻辑完成的。但我终其一生都想不出如何用 Tornado 完成同样的事情。
我目前正在 BaseHandler 的 prepare() 方法中读取每个租户的配置状态。但这显然已经来不及影响路由逻辑了,路由逻辑已经将请求映射到了一个Handler。
有什么方法可以将自定义路由功能附加到“/”,允许我选择一个处理程序来满足请求?
【问题讨论】:
-
我认为您需要编写一个
Router,它将查看租户的配置状态并相应地选择处理程序。不幸的是,关于这个主题的文档相当混乱。稍后我会添加完整的答案。 -
就是这样,感谢您朝正确的方向轻推@xyres。我已经使用 Router 类让它工作了。
-
@Dizga Vertov 太好了。
标签: tornado