Атрибут url_root
Атрибут url_root класса Request хранит
корневую часть URL, по которой пришёл запрос. В отличие
от url, атрибут url_root не включает путь
и параметры запроса. Значение формируется из схемы,
хоста и порта, а также корня приложения, если оно
размещено не в корне домена.
Атрибут доступен через объект request внутри
функции-обработчика. Он возвращает строку, например
'http://localhost/' или 'https://example.com/app/'.
Удобно применять его для построения абсолютных ссылок
или при отладке.
Синтаксис
request.url_root
Пример
Давайте выведем значение атрибута url_root
в ответ на запрос:
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
return request.url_root
Результат выполнения кода для адреса http://localhost:5000/:
http://localhost:5000/
Пример
Давайте сравним атрибуты url и url_root
для запроса с путём:
from flask import Flask, request
app = Flask(__name__)
@app.route('/user/abcde')
def user():
return {
'url': request.url,
'url_root': request.url_root
}
Результат выполнения кода для адреса http://localhost:5000/user/abcde:
{'url': 'http://localhost:5000/user/abcde', 'url_root': 'http://localhost:5000/'}
Пример
Давайте используем url_root для построения
абсолютной ссылки на статический файл:
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/')
def index():
link = request.url_root + 'static/style.css'
return render_template('index.html', link=link)
<p>{{ link }}</p>
Результат выполнения кода для адреса http://localhost:5000/:
<p>http://localhost:5000/static/style.css</p>
Смотрите также
-
класс
Request,
который представляет HTTP-запрос -
атрибут
url,
который возвращает полный URL запроса -
атрибут
base_url,
который возвращает URL без параметров запроса -
атрибут
script_root,
который возвращает корень приложения