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

#django #django-settings #django-cache

#django #django-настройки #django-cache

Вопрос:

Я пытаюсь кэшировать request.POST dict с помощью API низкоуровневого кэша, но, похоже, он не работает. Вместо кэшированного dict я получаю 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. Ваш пример интерактивного режима верен, cache.set ничего не возвращает ( None ). Попробуйте cache.get в интерактивном режиме.

2. Спасибо, это работает. Я удаляю неправильную сторону проблемы.

Ответ №1:

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

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

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