【发布时间】:2017-12-09 11:06:10
【问题描述】:
我有一个 Tornado 网络服务器,上面运行着一个应用程序,这样当我去:
本地主机:8888/
我看到了我的应用程序的主页。例如,当我去时,
- localhost:8888/static/image/logo.png
- localhost:8888/about
- 本地主机:8888/联系人
- 等等..
我也得到了那些相关的物品。
我的问题是,有没有办法更改根位置,以便所有这些 URL 将 URL 的第一部分替换为:
- localhost:8888/myApplication/
- localhost:8888/myApplication/static/image/logo.png
- 等等……
对不起,如果这是一个简单的问题!似乎找不到答案。
请注意,我想要一个解决方案,而不是手动更改所有页面路由正则表达式以包含该前缀。
【问题讨论】:
-
您能否提供一些代码,您如何定义路由/处理程序?你用的是 Tornado 的模板,你用的是
static_url,reverse_url吗? -
您可以阅读tornado.web document 发送
static_url_prefix获取服务器静态文件。 -
Tornado 没有提供任何方法来做到这一点。但是,我可能会问,手动更改网址有什么问题?您所要做的就是使用文本编辑器的查找/替换功能。
-
我希望 Tornado 能提供一种方法。问题是我在另一台服务器上代理 Web 应用程序,地址如下:proxy-server/MyApplication 但是 Tornado 对静态 URL 感到困惑,认为它们应该位于 proxy-server/static/etc.. 而不是 proxy-server/MyApplication /static/etc... 所以我最终破解了 tornado 中的静态 url 函数来为我的应用程序字符串添加前缀。不是最好的解决方案,但是...
-
我相信我们正在寻找相当于 Django
SUB_SITE的 Tornado。这是因为如果我们在连接到不同挂载点的代理或 wsgiadapter 模式下在同一主机上托管多个tornado.web.Applications,我们希望应用程序可以在任何挂载点上进行配置,而无需更改所有路由。 (顺便说一句,Flask/Werkzeug 路由装饰器似乎没有遇到这个问题,但也许他们在路由匹配时使用re.search而不是re.match...)。