Метод get_context_data вызывается дважды. Теги шаблонов в django
к базе данных обращаются дважды, один раз в views
, второй раз в templatetags
. Я пытался сделать mixin
, он все равно обращается дважды. как убрать второе обращение к базе данных?
ПРОСМОТРОВ
class MoneyHomeView(CacheQuerysetMixin, RelatedMixin, ListView):
model = Money
paginate_by = 10
template_name = 'money/money_list.html'
context_object_name = 'money'
def get_context_data(self, *, object_list=None, **kwargs):
context = super().get_context_data(**kwargs)
if self._check_cached() == False:
getQ = self._caching_queryset(self.getMoneyQuery())
else:
getQ = self._get_cached_queryset()
list_orders = getQ
paginator = Paginator(list_orders, self.paginate_by)
page = self.request.GET.get('page')
return context
def getMoneyQuery(self):
return Money.objects.all()
МИКСИН
class CacheQuerysetMixin:
_cached_queryset: list = None
def _caching_queryset(self, queryset):
if not self._cached_queryset:
self._cached_queryset = queryset
return self._cached_queryset
def _check_cached(self):
if not self._cached_queryset:
return False
return True
def _get_cached_queryset(self):
if not self._cached_queryset:
self._cached_queryset = queryset
return self._cached_queryset
templatetag
@register.simple_tag(takes_context=True)
def url_replace(context, **kwargs):
query = context['request'].GET.copy()
for kwarg in kwargs:
try:
query.pop(kwarg)
except KeyError:
pass
query.update(kwargs)
return mark_safe(query.urlencode())
Как решить эту проблему? Я думаю, мне нужно изменить templatetags