В статье присутствует псевдокод, которого для общего понимания концепции будет достаточно, и расчитана на новичков.
Что такое Cookies?
Cookies, в действительности HTTP Cookies, представляют из себя маленькие текстовые файлы, которые создаются и поддерживаются браузером по конкретному запросу веб-сервера и хранятся браузером. Большинство браузеров также будут показывать вам файлы cookie, созданные в настройках конфиденциальности и безопасности браузера.
HTTP - это протокол без сохранения состояния. Когда какой-либо запрос отправляется на сервер по этому протоколу, сервер не может определить, является ли пользователь новым или уже посещал сайт ранее.
Предположим, вы входите на какой-либо сайт, этот сайт отдает браузеру cookies, в которых хранится некая уникальная идентификация пользователя и некоторые другие детали в соответствии с контекстом.
Файлы cookie сделали эти реализации возможными с легкостью, что ранее было невозможно при реализации HTTP.
Как работают Cookies?
Файлы cookie работают так же, как и другие HTTP-запросы через интернет. В типичной веб-системе браузер делает запрос к серверу. Затем сервер отправляет ответ вместе с некоторыми файлами cookie, которые могут содержать некоторую информацию для входа в систему или другие данные.
Когда браузер делает новый запрос, на сервер также передается ранее созданный файл cookie. Этот процесс повторяется каждый раз, когда браузер делает новый запрос. Браузер повторяет процесс до тех пор, пока не истечет срок действия файла cookie или пока сеанс не будет закрыт, а файл cookie не будет удален самим браузером.
Затем файл cookie применяется во всех видах задач, например, при входе в систему или при совершении покупок в Интернете. Google AdSense и Google Analytics также могут отслеживать вас с помощью генерируемых ими файлов cookie. Разные сайты используют файлы cookie по-разному в зависимости от своих потребностей.
Теперь перейдем к основному разделу, в котором вы научитесь создавать файлы cookie в среде Django.
Создание Cookies в Django
Django обходит большую часть работы, которая в противном случае потребовалась бы при работе с файлами cookie. В Django есть такие методы, как set_cookie(), которые мы можем очень легко использовать для создания файлов cookie.
У set_cookie() есть следующие атрибуты:
name: определяет имя cookie
value: указывает текст или переменную, которую вы хотите сохранить в файле cookie.
max_age: это период времени cookie в секундах. По истечении периода времени он истечет. Это необязательный параметр; если нет, то cookie будет существовать до закрытия браузера.
Мы добавим этот метод в наши функции просмотра для создания файлов cookie.
После вызова функции вы сможете проверить созданный cookie в настройках браузера. Steam используется исключительно в качестве примера. В нашем случае будет использоваться localhost (127.0.0.1)
Добавим пути в urls.py нашего проекта и перейдем по пути
Читаем cookie из запроса
Cookie передаются на конкретный сайт каждый раз, когда клиент делает запрос. Таким образом, сервер каждый раз получает cookie вместе с запросом. Django упрощает получение данных из cookie.
1. Используя request.COOKIES
В Django у запроса request есть атрибут COOKIES.
COOKIES - это специальный атрибут запроса, значение которого - имя cookie, из которого вы хотите читать данные. Поскольку файлов cookie может быть несколько, вы можете изменять это значение много раз в зависимости от типа файла cookie, который хотите сохранить.
Вот как вы можете использовать то же самое.
Мы будем использовать базовый синтаксис для доступа к параметру класса как:
request.COOKIES ['cookie_name']
Этот код будет читать файл cookie с именем dataflair из текущего запроса, полученного браузером. Кроме того, мы можем снова создать новые cookie в этой функции, если значения изменятся.
2. Использование request.COOKIES.get()
Django также предоставляет метод для получения желаемого значения из cookie. Вы можете напрямую получить доступ к этому значению, используя метод get().
COOKIES.get (' имя_cookie', 'значение')
Внесем некоторые изменения.
В нашем views.py напишите этот код
Нам нужно будет применить redirect()
Этот код проверит, есть ли в запросе cookie или нет, а затем установит cookie в соответствии с этим. Для этого мы воспользуемся COOKIES.get().
Теперь внесем изменения в наш showcookie()
Этот код проверит cookie, и теперь мы можем запустить код.
Просто запустите свой сервер и введите getcookie/ в адресной строке.
Результат будет следующим. Затем мы проверяем, есть ли у cookie значение или нет, и, если ничего не нейдено, перенаправляет на setcookie().
Теперь снова найдите getcookie / в адресной строке.
Вы увидите такой результат. Опять же, попробуйте перезарядить его пару раз.
Мы все еще можем изменить этот код. Вам нужно будет посетить /setcookie/ url, чтобы снова изменить текст.
Удаление cookie
Django предоставляет простые методы удаления cookie. Поскольку мы использовали set_cookie() для создания cookie, мы также можем удалить cookie, используя аналогичную функцию delete_cookie().
delete_cookie() принимает имя удаляемого файла cookie, и этот метод связан с объектом ответа.
Добавьте эту функцию в свой файл views.py
Вывод должен выглядеть похожим образом:
Резюме
Поиграйтесь с кодом или отредактируйте этот, чтобы ознакомиться с темами, которые мы рассматривали до этого руководства. IDE подскажет методы, которые можно использовать.
В этом руководстве рассказывается исключительно об основах и о том, как их можно использовать в Django.
[RU]
Слушай в своем любимом приложении для подкастов: https://link.chtbl.com/castbox_ru
[EN]
Castbox - https://castbox.fm/channel/id2555636
Apple Podcasts - https://podcasts.apple.com/us/podcast/id149455872...