Атрибут remote_addr
Атрибут remote_addr класса Request возвращает строку, содержащую IP-адрес клиента, который сделал запрос к приложению Flask. Если приложение находится за прокси-сервером, этот атрибут может содержать адрес прокси, а не реального клиента, если не настроена соответствующая обработка заголовков.
Значение атрибута доступно только во время обработки запроса и только внутри контекста запроса. Если запрос не содержит информации об адресе, атрибут может вернуть None.
Синтаксис
from flask import request
request.remote_addr
Пример
Давайте создадим простое приложение, которое возвращает IP-адрес клиента:
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
return f"Your IP: {request.remote_addr}"
Результат выполнения кода при запросе с локального компьютера:
Your IP: 127.0.0.1
Пример
Давайте проверим, вернул ли атрибут значение, и выведем сообщение в зависимости от результата:
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
ip = request.remote_addr
if ip:
return f"Client IP: {ip}"
return "IP address not available"
Результат выполнения кода при отсутствии данных об IP:
IP address not available
Пример
Давайте сохраним IP-адрес в переменную и передадим его в шаблон:
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/')
def index():
user_ip = request.remote_addr
return render_template('index.html', ip=user_ip)
Шаблон для отображения IP-адреса:
<p>Your IP address: {{ ip }}</p>
Результат выполнения кода:
<p>Your IP address: 127.0.0.1</p>
Смотрите также
-
класс
Request,
который представляет HTTP-запрос -
атрибут
host,
который хранит имя хоста из запроса -
атрибут
headers,
который содержит заголовки запроса -
атрибут
user_agent,
который хранит информацию о браузере клиента