Работа с несколькими доменами в 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"