@artinnok
бекенд-программист

Как написать код контроллеров короче в таком случае?

При передаче контекста в шаблоны всегда передаю Корзину - чтобы в хедере было количество предметов в корзине.
Код контроллеров:

def view1(request):
      return render(request, 'template1.html',  {'cart': cart})

def view2(request):
      return render(request, 'template2.html',  {'cart': cart})

def view3(request):
      return render(request, 'template3.html',  {'cart': cart})


Кода хедера:
<p>Корзина <span>{{ cart.get_count }}</span></p>

Уверен в том, что это можно написать короче, а не передавать всегда объект Корзины.
Какие решения существуют?
  • Вопрос задан
  • 339 просмотров
Решения вопроса 2
@Vladisus
посмотрите на context processors.
Ответ написан
Комментировать
sim3x
@sim3x
Используй CBV https://docs.djangoproject.com/en/1.8/topics/class...
и наследуйся от миксина, которий добавляет корзину в context

Или сделай функцию, которая будет возвращать контекст, общий для всех вью

def my_context(request):
     # do what you want
     return my_context


def view1(request):
    context = my_context(request)    
    #do what you need
    return render('tpl1.html', context)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
un1t
@un1t
сделай свой templete tag https://docs.djangoproject.com/en/1.8/howto/custom...
и потом в шаблоне
{% get_cart as cart %}
{{ cart.get_count }}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы