Вы можете получить URL к запущенному в данный момент приложению через request.host_url
. Но то, что вы действительно хотите сделать, чтобы получить внешний URL-адрес для определенной c части вашего приложения, - это использовать url_for
так же, как и при обращении к обычным конечным точкам, но с параметр _external=True
:
Учитывая, что у вас есть:
@app.route('/login')
def login():
....
Вы можете создать внешний URL-адрес с помощью:
from flask import (
url_for,
)
...
url = url_for('login', _external=True)
Это также будет учитывать любые прокси-серверы перед вашим приложением, если вам это нужно, если вы использовали промежуточное ПО ProxyFix
при настройке объекта app
.
Поскольку в нем используется тот же механизм, что и при использовании Flask генерируя URL-адреса между различными страницами, он должен вести себя так, как вы хотите - т.е. он будет работать как на localhost
, так и на удаленном хосте.