Все переменные попадают в index.html, кроме одной?

Я делаю проект на django (я новичок в django). До сих пор все шло гладко, за исключением одной проблемы, которую я никак не могу решить.

Вот мой метод get для Django:

class Index(TemplateView):
    template_name = 'project/index.html'

    def get(self, request):
        allBrands = InventoryItem.objects.values_list('brand', flat=True).distinct().order_by('totalReviews')
        allAgeGroups = InventoryItem.objects.values_list('ageGroup', flat=True).distinct()

        items = InventoryItem.objects.all()

        return render(request, self.template_name, {
      'items': items,
      'allBrands': allBrands,
      'allAgeGroups': allAgeGroups,
    })

Когда я добавил 'allAgeGroups', я столкнулся с проблемой, когда по какой-то причине index.html не получал информацию.

Запрос работает.

Когда я print(allAgeGroups) в функции get(), я ничего не получаю

Когда я print(allAgeGroups) в функции post(), я получаю <QuerySet ['Adult', 'Youth']> (то, что я хочу)

И я только что понял, что могу удалить все из функции рендеринга, сохранить файл, обновить страницу, и все по-прежнему работает???

Что происходит?

Спасибо.

Вы трижды вызываете одну и ту же модель, хотя это кажется излишним. Лучше попробовать что-то вроде этого:

views.py

class Index(TemplateView):
    template_name = 'project/index.html'

    def get(self, request):
        items = InventoryItem.objects.all()

        return render(request, self.template_name, {
      'items': items,
    })

index.html

{% extends "project/base.html" %}

{% block content %}
   {% include "project/nav.html" with items=items %}

   {% for item in items %}
      <div>{{ item.ageGroup }}</div>
      <div>{{ item.brand }}</div>
   {% endfor %}
{% endblock %}

И не забудьте зарегистрировать свой TemplateView в urls.py.

Вернуться на верх