Работа с несколькими доменами в 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". И, как я знаю, при использовании redirect
в Flask он изменяет url. Как мне организовать такую структуру? Спасибо!
Ответы
Ответ 1
Объект 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.
Ответ 2
Вот что выглядит код с импортом:
import flask
print flask.request.url_root # prints "http://domain1.com/"
print flask.request.headers['Host'] # prints "domain1.com"