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 хранятся данные о сохранении данных сеанса).