Django API низкоуровневого кеша не работает - PullRequest
0 голосов
/ 01 ноября 2011

Я пытаюсь кэшировать диктат request.POST с помощью низкоуровневого 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',
    }
}

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

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

1 Ответ

0 голосов
/ 01 ноября 2011

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

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

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

...