Я пытаюсь создать cookie, который имеет определенное время истечения. Я установил это в моем представлении django со следующим кодом:
from datetime import datetime
response.set_cookie('cookie_name', 'cookie_value', expires=datetime.today() + timedelta(20*365), path='/path/to/cookie/')
Я читаю значение куки, используя плагин jQuery Cookie со следующим кодом:
if ($.cookie("cookie_name") == "True") {
$.cookie("cookie_name", "False");
}
else {
$.cookie("cookie_name", "True");
}
Моя основная проблема заключается в том, что файл cookie рассматривается как файл cookie сеанса (как показано в списке файлов cookie разработчика Chromium на вкладке «Ресурсы» в разделе «Файлы cookie»). Почему время истечения срока действия моего файла cookie не отображается или сбрасывается? Я могу убедиться, что файл cookie является файлом cookie сеанса, поскольку, если я закрою браузер и снова открою файл cookie, его там нет.
Обновление
Я изменил свой код cookie django на следующий, согласно ответу в этом посте :
from datetime import datetime
max_age = 20*365*24*60*60 #twenty years
expires = datetime.strftime(datetime.utcnow() + timedelta(seconds=max_age), "%a, %d-%b-%Y %H:%M:%S GMT")
response.set_cookie(key='cookie_name', value='cookie_value', max_age=max_age, expires=expires, path='/path/to/cookie/')
Согласно Chromium, мои cookie все еще являются сессионными cookie.
Обновление 2
Я также пытался пропустить expires и установить только max_age, и у меня все еще остается та же проблема.
max_age = 20*365*24*60*60 #twenty years
expires = datetime.utcnow() + timedelta(seconds=max_age)
response.set_cookie(key='advisees', value=limit_to_advisees, expires=expires, path='/path/to/cookie/')
Джанго должен рассчитать max_age, если он не предоставлен. Я действительно смущен, здесь.