#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 одного пользователя, а затем извлечение их для всех других пользователей. Я очень сомневаюсь, что это то, что вы намереваетесь.
Если вы хотите сохранить отправленные пользователем данные, сохраните их в сеансе.