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

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

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

  1. установить постоянный cookie на основе их области.
  2. когда они вернуть чтение cookie, захватить zipcode.
  3. возврат содержимого на основе почтового индекса в их cookie.

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

3 ответов


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

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

обновление: проверьте @Peter ответ ниже для встроенного решения:https://stackoverflow.com/a/5575578/174027


используя рамки сеанса 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']

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