17

我想在 Flask 中实现结构,它可以处理多个域。因此,当我在浏览器中输入“ http://domain1.com/show/1 ”时,它实际上会执行类似路由的功能

@app.route('<string:domain>/show/<int:id>')
def show(domain = '', id = ''):
    return 'Domain is ' + domain + ', ID is ' + str(id)

非常重要的是,客户端浏览器中的 URL 应该仍然是“ http://domain1.com/show/1 ”。据我所知,redirect在 Flask 中使用时,它会更改 url。我应该如何组织这样的结构?谢谢!

4

2 回答 2

27

request对象已经有一个url_root参数。或者您可以使用Host标题:

print request.url_root  # prints "http://domain1.com/"
print request.headers['Host']  # prints "domain1.com"

如果您需要在应用程序内进行重定向,url_root请查看该属性,因为它将包括 WSGI 应用程序的完整路径,即使根植于更深的路径(例如,从 开始http://domain1.com/path/to/flaskapp)。

最好还是request.url_for()让 Flask 为你生成一个 URL;它会考虑url_root到。请参阅URL 构建文档。

于 2013-02-12T18:54:11.480 回答
2

以下是导入后的代码:

import flask

print flask.request.url_root  # prints "http://domain1.com/"
print flask.request.headers['Host']  # prints "domain1.com"
于 2018-01-31T23:53:26.110 回答