Django Переменные есть во views, но в шаблоне не выводятся
В urls.py
urlpatterns = [
path('', views.BrowseAll), #Выводит всё, и категории, и компоненты в категории
path('<slug:category_slug>/', views.BrowseCategory, name = 'BrowseCategory'), #Только компоненты в категории
path('<slug:category_slug>/<slug:component_slug>/', views.BrowseComponent, name = 'BrowseComponent'), #Только компонент
]
Вот мой views.py
def BrowseComponent(request, category_slug, component_slug):
context = {}
category = Category.objects.all().filter(slug = category_slug) #Определяем категорию из url
component = Component.objects.all().filter(category__in = category, slug = component_slug) #Смотрим если есть компонент в категории, и берём нужный по полю slug
context['category'] = category
context['component'] = component
print(category) #Поставил для вывода в консоль
print(component) #Поставил для вывода в консоль
return render(request, 'components/BrowseComponent.html', context)
А вот и сам шаблон
<h2>{{ component.name }}</h2>
Учитывая print`ы в views, в консоли, при загрузке страницы, выводит
<QuerySet [<Category: Hero>]>
<QuerySet [<Component: Fullscreen hero>]>
Но, на странице только пустой тег. Приму любой ответ, даже ссылку на Гугл поиск (я просто не знаю, как это правильно забить)
Ответы (1 шт):
Автор решения: Edward
→ Ссылка
Итак, почему же переменная не выводилась, проведя небольшой дебаг, я обнаружил, что если {{ component.name }} ввести в конструкцию цикла, то все Ок. Я начал рыть, и заметил, что ошибка была в том, что я фильтровал компоненты по slug полю, а не получал его, заменив
component = Component.objects.all().filter(category__in = category, slug = component_slug)
На
component = Component.objects.all().filter(category__in = category).get(slug = component_slug)
Всё отлично работает.