Evgenii Legotckoi
Evgenii Legotckoi30 грудня 2016 р. 00:30

Django - Підручник 015. Отримання IP-адреси та попередньої URL-адреси із запиту

Отримання IP-адреси користувача з запиту на Django може бути корисним для організації такого функціоналу сайту, як, наприклад, блокування хостів, з яких виконуються спроби підбору пароля до сайту або необхідність запам'ятати користувача по IP, щоб забезпечувати доступ до сайту тільки для певного користувача з певного IP адреси.

IP адреса може бути як реальною, так і переданою через проксі-сервер.

def get_client_ip(request):
    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
    if x_forwarded_for:
        ip = x_forwarded_for.split(',')[-1].strip()
    else:
        ip = request.META.get('REMOTE_ADDR')
    return ip

Отримання попереднього URL, на якому користувач може бути корисно в тому випадку, якщо Вам необхідно зробити перенаправлення користувача на ту сторінку, з якої користувач прийшов після виконання авторизації.

Наприклад, на цьому сайті є віджет авторизації на кожній сторінці. Для авторизації з віджету надсилається POST запит на URL авторизації, але після цього необхідно повернути користувача на ту сторінку, з якою він прийшов, щоб користувач міг далі працювати зі статтею або форумом. Можна додавати до віджета спеціальне поле, яке міститиме поточну URL-адресу і передає його в POST запиті. Спочатку так було зроблено, але це ускладнює код. А можна скористатися вилученням реферального URL, з якого користувач прийшов, як зараз зроблено на сайті.

from django.utils.http import is_safe_url, urlunquote


def get_next_url(request):
    next = request.META.get('HTTP_REFERER')
    if next:
        next = urlunquote(next)  # HTTP_REFERER may be encoded.
    if not is_safe_url(url=next, host=request.get_host()):
        next = '/'
    return next

За допомогою цієї функції можна буде отримувати попередній URL у будь-якому запиті та не писати окремий спеціальний код для перенаправлень для кожного віджету чи форми, з якою працює користувач.

Для Django рекомендую VDS-сервера хостера Timeweb .

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50бали,
  • Рейтинг балів-4
m
  • molni99
  • 26 жовтня 2024 р. 01:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80бали,
  • Рейтинг балів4
m
  • molni99
  • 26 жовтня 2024 р. 01:29

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20бали,
  • Рейтинг балів-10
Останні коментарі
i
innorwall11 листопада 2024 р. 22:12
Django - Урок 055. Як написати функціонал auto populate field Freckles because of several brand names retin a, atralin buy generic priligy
i
innorwall11 листопада 2024 р. 18:23
QML - Підручник 035. Використання перерахувань в QML без C++ priligy cvs 24 Together with antibiotics such as amphotericin B 10, griseofulvin 11 and streptomycin 12, chloramphenicol 9 is in the World Health Organisation s List of Essential Medici…
i
innorwall11 листопада 2024 р. 15:50
Qt/C++ - Урок 052. Налаштування Qt Audio player в стилі AIMP It decreases stress, supports hormone balance, and regulates and increases blood flow to the reproductive organs buy priligy online safe Promising data were reported in a PDX model re…
i
innorwall11 листопада 2024 р. 14:19
Алгоритм сортування купою The role of raloxifene in preventing breast cancer priligy precio
i
innorwall11 листопада 2024 р. 13:55
PyQt5 - Урок 006. Робота з QTableWidget buy priligy 60 mg 53 have been reported by Javanovic Santa et al
Тепер обговоріть на форумі
i
innorwall11 листопада 2024 р. 20:56
добавить qlineseries в функции buy priligy senior brother Chu He, whom he had known for many years
i
innorwall11 листопада 2024 р. 10:55
Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
9
9Anonim25 жовтня 2024 р. 09:10
Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
ИМ
Игорь Максимов03 жовтня 2024 р. 04:05
Реализация навигации по разделам Спасибо Евгений!

Слідкуйте за нами в соціальних мережах