У меня есть определенный случай использования, когда приложение Flask не сконфигурировано с SERVER_NAME и находится в подпути (скажем, http://example.com/subpath/subpath2),, и в контексте запроса мне нужноизвлечь только http://example.com.
Я заметил, что без настройки SERVER_NAME в конфигурации Flask, url_for
с _external=True
все еще может получить полный URL-адрес, включая домен, на котором находится приложение FlaskЯ решил, что должен быть способ, которым Flask (или Werkzeug) извлекает домен. Я копался внутри функции url_for
, и в результате была получена эта функция, которую я сделал, чтобы получить домен из контекста запроса.
from flask.globals import _request_ctx_stack
def get_domain():
fragments = [
_request_ctx_stack.top.url_adapter.url_scheme,
_request_ctx_stack.top.url_adapter.get_host(''),
]
return '://'.join(fragments)
Я понимаю, что у меня есть доступ к частным пользователям, но нет другого очевидного способа сделать это, который я мог бы найти. Это правильный способ сделать это?