Наследование шаблона Django {% include %} с набором моделей

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

Мой main.html представляет собой список постов. Каждый пост имеет еще один список комментариев.

{% for comment in post.comment_list|slice:"0:7" %}
{% include 'blog/comments.html' %}
{% endfor %}

Мой comments.html - это шаблон для каждого комментария.

<div><h1>
{comment.username}
{comment.id}
{comment.body}
<a class="mr-2 comment-user" href="{% url 'user-posts' comment.username %}"> <!-- link to user's profile (/user-posts/username/) -->
</h1></div>

Сообщение об ошибке: NoReverseMatch at / Не найдено обратного соответствия для 'user-posts' с аргументами '('',)'. 1 pattern(s) tried: ['user/(?P[^/]+)/$']

Что я могу сделать, чтобы это сработало?

Однако это работает, если я помещаю их в один шаблон вместе...

{% for comment in post.comment_list|slice:"0:7" %}

<div><h1>
{comment.username}
{comment.id}
{comment.body}
<a class="mr-2 comment-user" href="{% url 'user-posts' comment.username %}"> <!-- link to user's profile (/user-posts/username/) -->
</h1></div>

{% endfor %}

models.py

class Comment(models.Model):
user = models.ForeignKey(Profile, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
body = models.TextField(max_length=300)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
liked = models.ManyToManyField(Profile, blank=True, related_name='com_likes')

views.py

class PostListView(ListView):
model = Post
template_name = 'blog/home.html'
context_object_name = 'posts'
ordering = ['-date_posted']
paginate_by = 5

def get_context_data(self, *args, **kwargs):
    c_form = CommentModelForm(self.request.POST or None)
    context = super(PostListView, self).get_context_data(*args, **kwargs)
    context['c_form'] = c_form
    return context

def get_queryset(self):
    return (
        super()
        .get_queryset()
        # Prefetch comment using a Prefetch object gives you more control
        .prefetch_related(
            Prefetch(
                "comment_set",
                # Specify the queryset to annotate and order by Count("liked")
                #queryset = Post.objects.annotate(like_count=Count('liked')).order_by('-like_count')
                queryset=Comment.objects.annotate(
                    like_count=Count("liked")
                ).order_by("-like_count"),
                # Prefetch into post.comment_list
                to_attr="comment_list",
            )
        )
    )

использование include для использования из родительского шаблона уместно, когда ваш родительский шаблон включает формат вашей страницы. это нестандартная работа, которую вы хотите сделать в django

Вам нужно передать контекст включенному шаблону, например:

{% for comment in post.comment_list|slice:"0:7" %}
{% include 'blog/comments.html' with comment=comment %}
{% endfor %}

это было хорошо объяснено в этой теме: Присвоение переменных дочернему шаблону в теге {% include %} Django

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