我想在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”。据我所知,在Flask中使用redirect
时,它会更改网址。我该如何组织这样的结构?谢谢!
答案 0 :(得分:24)
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_root
。请参阅URL Building文档。
答案 1 :(得分:1)
以下是使用导入的代码:
import flask
print flask.request.url_root # prints "http://domain1.com/"
print flask.request.headers['Host'] # prints "domain1.com"