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