Почему теги инклюзии не работают в Django?

Я хочу использовать теги включения для отображения боковой панели, но ничего не отображается.

templatetags/sidebar_tags.py

from ..models import Post
from django import template

register = template.Library()


@register.inclusion_tag('blog/include/post-category.html')
def post_category():
    return {'posts': Post.objects.all()}

post-category.html

<div class="single-sidebar-widget post-category-widget">
    <h4 class="category-title">Post Categories</h4>
    <ul class="cat-list">
        {% for category in posts.categories.all %}
        <li>
            <a href="#" class="d-flex justify-content-between">
                <p>{{ category.name }}</p>
                <p>37</p>
            </a>
        </li>
        {% endfor %}
    </ul>
</div>

home.html

{% load sidebar_tags %}
{% post_category %}

Я думаю, что код в порядке, но я не знаю, почему он работает

Единственная причина, по которой он не может появиться - зарегистрированный тег не видит шаблон. btw. Не импортируйте посты в тег. Вы можете добавить "objests_list" в контекст, а в теге использовать контекст шаблона. А для стандартного просмотра списка django делает это автоматически.

@register.inclusion_tag('blog/include/post-category.html', takes_context=True)
def post_category(context):
    return {'posts': context['objects_list']}

Но если в данном случае вы хотите вывести список объектов, то тег inclusion вообще не нужен:

в файле home.html:

{% load sidebar_tags %}
{% include 'blog/include/post-category.html' with posts=objects_list %}
Вернуться на верх