Django как добавить СЛОВАРЬ в свой(или во вьюшкин) контекст? - Python

Узнай цену своей работы

Формулировка задачи:

собсно. Django 1.10 Хочу "обсчитать" некоторые штуки по моделям и использовать их в шаблонах, но так чтобы обсчеты были не в каждой вьюхе и затем добавлялись в контекст данной вьюхи, а централизованно: создать свой контекст, все там сосчитать, и пользоваться. создал контекст: context_processors.py в папке апы tasklist
Листинг программы
  1. from .models import TaskList, Task
  2.  
  3. def tasklist_context(request):
  4. tl_context = dict()
  5. tls = TaskList.objects.all()
  6. for tl in tls:
  7. complete_task_nmb = Task.filter(tasklist=tl, status=True).count()
  8. uncomplete_task_nmb = Task.filter(tasklist=tl, status=False).count()
  9. tl_context[tl.id] = {'ctn': complete_task_nmb, 'utn': uncomplete_task_nmb}
  10. return {'tl_context': tl_context}
  11. # return {tl_context} - а если так - то как потом обращаться?
добавил его в setting.py:
Листинг программы
  1. TEMPLATES = [
  2. {
  3. 'BACKEND': 'django.template.backends.django.DjangoTemplates',
  4. 'DIRS': [os.path.join(BASE_DIR, 'templates')]
  5. ,
  6. 'APP_DIRS': True,
  7. 'OPTIONS': {
  8. 'context_processors': [
  9. 'django.template.context_processors.debug',
  10. 'django.template.context_processors.request',
  11. 'django.contrib.auth.context_processors.auth',
  12. 'django.template.context_processors.media',
  13. 'django.contrib.messages.context_processors.messages',
  14. 'tasklist.context_processors.tasklist_context',
  15. ],
  16. },
  17. },
  18. ]
по идее должен увидеть в шаблоне хотя бы "имя" - {{tl_context}} но нету его... Как сделать?

Решение задачи: «Django как добавить СЛОВАРЬ в свой(или во вьюшкин) контекст?»

textual
Листинг программы
  1.     def get_context_data(self, *args, **kwargs):
  2.  
  3.         context = super(TaskListIndex, self).get_context_data(**kwargs)
  4.         context['user'] = self.request.user.is_authenticated
  5.        
  6.         tls = TaskList.objects.filter(user=self.request.user)
  7.        
  8.         for tl in tls:
  9.             context[str(tl.id)+'ctn'] = Task.objects.filter(tasklist=tl, status=True)
  10.             context[str(tl.id)+'utn'] = Task.objects.filter(tasklist=tl, status=False)
  11.            
  12.         return context

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы