Как вывести model в каждом html шаблоне?
Я вывожу модель Categorie в header своего шаблона.
Но создавать запрос в каждой функций внутри views.py я не хочу
Можно ли как то вывести модель в каждом шаблоне зодовая только один запрос
Я попробовал использовать templatetags но
что так
@register.simple_tag(takes_context=True)
def header_categories(context):
return Categorie.objects.all().order_by('id')
что вот так
@register.simple_tag(takes_context=True)
def header_categories(context):
categories = Categorie.objects.all().order_by('id')
args = {}
for cat in categories:
args[cat.text] = {
'id':cat.id,
}
if cat.parent:
args[cat.text]['parent_id'] = cat.parent.id
args[cat.text]['parent_text'] = cat.parent.text
return args
Ничего не работает правильно
{% for cat in header_categories %}
cat.text
{% endfor %}
я пытался через js
var arr = {%header_categories%}
но django все коверкает
{'Женская одежда': {'id': 19},
Ответы (2 шт):
Автор решения: JopaBoga
→ Ссылка
tags.py
from django import template
from apps.models import Categorie
register = template.Library()
@register.inclusion_tag('apps/tags.html')
def header_categories():
categories = Categorie.objects.all().order_by('id')
args = {}
for cat in categories:
args[cat.text] = {
'id':cat.id,
}
if cat.parent:
args[cat.text]['parent_id'] = cat.parent.id
args[cat.text]['parent_text'] = cat.parent.text
return args
tags.html
{% for cat in page_obj %}
{{ cat.parent_id }}:{{ cat.parent_text }}
{% endfor %}
base.html
{% load tags %}
{% header_categories %}
Автор решения: Andrew Holovko
→ Ссылка
Вам необходимо исправить ваш код в шаблоне, вы скобочки пропустили в цикле:
{% for cat in header_categories %}
{{ cat.text }}
{% endfor %}
Ссылка на оф. документацию по шаблонам в django: https://docs.djangoproject.com/en/3.1/ref/templates/builtins/
Работать будет только при условии, что header_categories будет содержать список объектов у которых есть параметр text.