постоянное печенье в бутылке питона не работает - PullRequest
3 голосов
/ 27 октября 2011

У меня есть сайт, над которым я работаю, я хочу сохранить значение в cookie

это число, когда пользователь заходит на сайт, я хочу знать, какое число было у него в последний разпосещение, поэтому я имею в виду наличие постоянного файла cookie, в котором хранится текущее значение. Когда пользователь заходит на сайт, если нет файла cookie сеанса, тогда файл cookie сеанса получает копию постоянного файла cookie.Таким образом, файл cookie сеанса всегда имеет значение с последнего посещения.

как бы то ни было, кажется, что мой постоянный файл cookie не сохраняется, даже если я установил дату истечения 1 год с этого момента

вот мой код Python:

persistentCookieKey = category + '_highest_id'
sessionCookieKey = 'session_' + persistentCookieKey + '_highest_id'

persistentCookieValue = request.get_cookie(persistentCookieKey)
if persistentCookieValue == None:
    persistentCookieValue = 0      # each time i restart my browser it comes through here!

sessionCookieValue = request.get_cookie(sessionCookieKey)
print 'persistentCookieValue:', persistentCookieValue
print 'sessionCookieValue:', sessionCookieValue

if sessionCookieValue == None:
    print 'session cookie not set, setting to:', persistentCookieValue
    sessionCookieValue = persistentCookieValue
    response.set_cookie(sessionCookieKey, str(persistentCookieValue))

print 'setting persistent cookie to value:', highestId
expireDate = date.today() + timedelta(days=365)
response.set_cookie(persistentCookieKey, str(highestId), expires=expireDate)

highestIdLastVisit = int(sessionCookieValue) 

1 Ответ

9 голосов
/ 27 октября 2011

Бутылка использует http://docs.python.org/library/cookie.html для поддержки файлов cookie. Эта реализация требует, чтобы параметр expires был строкой в ​​формате Wdy, DD-Mon-YY HH:MM:SS GMT. Передача объектов datetime или date завершается с ошибкой.

Я исправлю это в следующих версиях Bottle (привет, я автор), но пока я предлагаю использовать max_age.

Edit: О, и я только что заметил, что это также задокументировано неправильно. Простите за это. Edit2: исправлено (в основной)

...