понедельник, 2 января 2012 г.

Шаблон для геттера кешируемой переменной в Django

Когда пишешь под Django, часто приходится писать геттеры каких-то переменных модели, которые в первый раз извлекаются из базы данных, а потом сохраняются в приватном свойстве объекта (похожим образом работает стандартный джанговский LazyUser из AuthenticationMiddleware, например). Решил поделиться своим шаблоном для этого случая, который подойдет для PyDev или любого другого редактора, основанного на Eclipse:


def ${method_name}(self, try_cached = True, save_cache = True):
                
    result = None
        
    if try_cached:
        #если разрешено отдавать из кеша, отдаем
        if hasattr(self, '_cached_${method_name}'):        
            return self._cached_${method_name}
        
    ${cursor}             
        
    if save_cache:
        #если надо закешировать в объекте, сохраним в приватном свойстве
        self._cached_${method_name} = result
        
    return result

Комментариев нет:

Отправить комментарий