Хорошо, чтобы получить значение по умолчанию, если ключ не выходит, вы можете предоставить второй параметр:
cache.get('key', 'default')
cache.get()
может принимать аргумент по умолчанию. Это указывает, какое значение возвращать, если объект не существует в кэше.
Чтобы сохранить значение по умолчанию в кеше, если ключ не существует, вы можете предоставить пользовательский кеш-сервер . Например. это расширяет серверную часть кэша db
(но работает так же и с другими):
from django.core.cache.backends import db
class CustomCache(db.CacheClass):
def get(self, key, default=None):
result = super(CustomCache, self).get(key, default)
if result == default:
self.add(key, default)
return default
return result
Но я не думаю, что это добавляет какую-либо ценность.
Обновление:
В ответ на комментарий к другому сообщению: Да, оно сравнивает значение по умолчанию с возвращаемым значением, и если оба значения равны, значение добавляется в кэш. Но cache.add
устанавливает новое значение, только если ключ не уже находится в кэше (в отличие от cache.set
, который всегда переопределяет):
Чтобы добавить ключ , только если он еще не существует , используйте метод add()
. Он принимает те же параметры, что и set()
, но не будет пытаться обновить кэш , если указанный ключ уже присутствует.