API низкоуровневого кеширования Django не работает

Я пытаюсь кэшировать request.POST dict с помощью низкоуровневого API кеширования, но похоже, что он не работает. Вместо кешированного словаря я получаю значение None.

Вот что я пробовал:

print cache.get('forms_data') # It is None
education_formset = Education(
    request.POST or cache.get('forms_data') or None, prefix='education')

if education_formset.is_valid():
    if 'view' in request.POST:
        cache.set('forms_data', request.POST, 600)

Настройки:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': 'unix:/tmp/memcached.sock',
    }
}

При запуске кода исключений не было.

Может что-то не так с настройками или с юниксом memcached.sock?


person I159    schedule 01.11.2011    source источник
comment
Ваш пример интерактивного режима верен, cache.set ничего не возвращает (None). Попробуйте cache.get в интерактивном режиме.   -  person DrTyrsa    schedule 01.11.2011
comment
Спасибо, работает. Убираю неправильную сторону вопроса.   -  person I159    schedule 01.11.2011


Ответы (1)


Как указывает DrTyrsa в комментариях, cache.set возвращает None.

Однако я не могу понять, чего вы здесь пытаетесь достичь. Кеш глобальный: он одинаков для всех пользователей вашего сайта. Здесь вы кэшируете значения POST одного пользователя, а затем извлекаете их для всех других пользователей. Я очень сомневаюсь, что вы этого хотите.

Если вы хотите сохранить сообщения пользователя, сохраните их в сеансе.

person Daniel Roseman    schedule 01.11.2011