Сессии, регистрация и пользователи
Мы начнём с нижнего уровня (cookies) и продолжим изучение инструментов высокого уровня для поддержки сессий, аутентификации и авторизации пользователей.
Cookie
Cookie — это небольшие кусочки информации, которые браузер сохраняет по просьбе веб сервера. При каждом обращении браузера к странице определённого сайта, он отсылает полученную ранее cookie.
Давайте рассмотрим как это работает. Когда вы открываете свой браузер и переходите на http://google.com/ , ваш браузер отправляет HTTP запрос на Google, который начинается так:GET / HTTP/1.1 Host: google.com ...
Ответ Google выглядит обычно так:
Обратите внимание на заголовок
Set-Cookie. Ваш браузер сохранит значение cookie (PREF=ID=5b14f22bdaf1e81c:TM=1167000671:LM=1167000671) и будет отсылать его обратно, при каждом обращении к серверу Google. Таким образом, при следующем посещении Google, ваш браузер будет посылать такой запрос:
Google затем может использовать значение Cookie для определение того, что вы именно тот, кто обращался к сайту ранее. Значение, например, может быть ключом записи в базе данных, которая хранит информацию о пользователе. Google может (и будет) использовать её для отображения вашего имени на странице.
Получение и установка
Прочитать уже установленный cookie невероятно просто. Каждый объект запроса обладает объектом COOKIES, который выглядит как словарь. Вы можете использовать его для чтения значения любого cookie, которые браузер отправил в представление:
Записать cookie гораздо сложнее. Вам потребуется использовать методset_cookie()
объекта HttpResponse
. Ниже приведён пример установки cookie favorite_color, значение для которого берётся из параметра GET:
Вы также можете передать ряд необязательных аргументов вresponse.set_cookie()
, которые управляют поведением cookie, подробности описаны в таблице "Опции cookies":Несмотря на их почти универсальное использование, cookie ненадёжны. Это означает, что разработчики должны проверять, что пользователь действительно принял cookie прежде чем начинать использовать их.
Самое главное, никогда не сохраняйте важную информацию в cookie. Интернет заполнен ужасными историями о разработчиках, которые сохраняли не восстанавливаемую информацию в cookie.