Все переменные попадают в 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
.