在Flask中处理多个域名
我想在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 时,它会改变URL。那么我应该如何组织这样的结构呢?谢谢!
相关问题:
2 个回答
2
这段代码是加了导入部分的样子:
import flask
print flask.request.url_root # prints "http://domain1.com/"
print flask.request.headers['Host'] # prints "domain1.com"
32
在Flask中,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构建 的文档来了解更多。