Django Cookies, как я могу их установить?

У меня есть веб-сайт, который показывает различный контент на основе местоположения посетитель выбирает. например: пользователь вводит код 55812 в качестве почтового индекса. я знаю что города и области лат/долго. то есть и дать им их содержание, соответствующее к этой области. Мой вопрос в том, как я могу хранить это в файле cookie, чтобы Когда они возвращаются, они не обязаны всегда вводить свой почтовый индекс?

Я вижу это следующим образом:

  • Установить постоянный файл cookie на основе их области.
  • Когда они возвращают read cookie, возьмите zipcode.
  • Возвращает содержимое на основе почтового индекса в своем файле cookie.

Я не могу найти твердую информацию о настройке cookie. Любые помощь очень ценится.

Ответ 1

Это помощник для установки постоянного куки:

import datetime

def set_cookie(response, key, value, days_expire = 7):
  if days_expire is None:
    max_age = 365 * 24 * 60 * 60  #one year
  else:
    max_age = days_expire * 24 * 60 * 60 
  expires = datetime.datetime.strftime(datetime.datetime.utcnow() + datetime.timedelta(seconds=max_age), "%a, %d-%b-%Y %H:%M:%S GMT")
  response.set_cookie(key, value, max_age=max_age, expires=expires, domain=settings.SESSION_COOKIE_DOMAIN, secure=settings.SESSION_COOKIE_SECURE or None)

Используйте следующий код перед отправкой ответа.

def view(request):
  response = HttpResponse("hello")
  set_cookie(response, 'name', 'jujule')
  return response

ОБНОВЛЕНИЕ: проверьте ответ Питера ниже для встроенного решения:

Ответ 2

Использование рамки сеанса Django должно охватывать большинство сценариев, но Django также теперь предоставляет методы непосредственного управления файлами cookie на объектах запроса и ответа (так что вам не нужна вспомогательная функция).

Настройка файла cookie:

def view(request):
  response = HttpResponse('blah')
  response.set_cookie('cookie_name', 'cookie_value')

Получение файла cookie:

def view(request):
  if 'cookie_name' in request.COOKIES:
    value = request.COOKIES['cookie_name']

Ответ 3

Вы можете вручную настроить файл cookie, но в зависимости от вашего варианта использования (и если вам захочется добавить в будущем больше типов данных о постоянных/сессиях), может возникнуть больше смысла использовать Функция сеансов Django. Это позволит вам получить и установить переменные, привязанные внутренне к файлу cookie сеанса пользователя. Прохладная вещь об этом заключается в том, что если вы хотите хранить много данных, привязанных к пользовательскому сеансу, то их хранение в файлах cookie добавит много веса к HTTP-запросам и ответам. С сеансами сеансовый файл cookie - это все, что отправляется туда и обратно (хотя на конец Django хранятся данные о сохранении данных сеанса).