Метод is_secure
Метод is_secure применяется к объекту запроса и возвращает
True, если запрос был выполнен по защищенному протоколу HTTPS,
и False в противном случае. Этот метод полезен для проверки
безопасности соединения в представлениях, особенно когда необходимо
убедиться, что чувствительные данные передаются только по защищенному
каналу. Метод не принимает никаких аргументов.
Синтаксис
request.is_secure()
Пример . Проверка протокола
Проверим, использует ли текущий запрос защищенное соединение:
from django.http import HttpResponse
def secure_check_view(request):
if request.is_secure():
return HttpResponse("Соединение защищено (HTTPS)")
else:
return HttpResponse("Соединение не защищено (HTTP)")
Пример . Перенаправление на HTTPS
Принудительно перенаправим пользователя на защищенную версию страницы, если соединение не является безопасным:
from django.http import HttpResponseRedirect
from django.urls import reverse
def secure_redirect_view(request):
if not request.is_secure():
secure_url = request.build_absolute_uri().replace('http://', 'https://')
return HttpResponseRedirect(secure_url)
return HttpResponse("Страница доступна по HTTPS")
Пример . В шаблоне
Метод is_secure также доступен в шаблонах через контекстную
переменную request для условного отображения контента:
🔒 Соединение защищено
{% else %}🔓 Соединение не защищено
{% endif %} <-python->Пример . С определением схемы URL
Используем результат метода для построения абсолютного URI с правильной схемой:
from django.http import HttpResponse
def full_url_view(request):
if request.is_secure():
scheme = "https"
else:
scheme = "http"
full_url = f"{scheme}://{request.get_host()}{request.path}"
return HttpResponse(f"Полный URL: {full_url}")
Результат выполнения кода:
"Полный URL: https://example.com/my-page/"
Смотрите также
-
атрибут
method,
который возвращает HTTP-метод запроса -
атрибут
path,
который возвращает путь запроса -
метод
build_absolute_uri,
который формирует абсолютный URI на основе текущего запроса -
метод
get_full_path,
который возвращает полный путь запроса с параметрами