Django : Недопустимый тег блока в строке 121: 'popular_products', ожидается 'endblock'. Вы забыли зарегистрировать или загрузить этот тег?

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

Недопустимый тег блока в строке 122: 'popular_products', ожидается 'endblock'. Вы забыли зарегистрировать или загрузить этот тег?

base_tags.py:

from django import template
from django.db.models import Count, Q
from datetime import datetime, timedelta
from shop.models import Product

register = template.Library()


@register.inclusion_tag('shared/partials/popular_product_slider.html')
def popular_products():
    last_week = datetime.today() - timedelta(days=7)
    return {
        "popular_products": Product.objects.filter(available=True).annotate(
            count=Count('hits', filter=Q(producthit__date__gt=last_week))).order_by(
            '-count', '-created')[:3]
    }

шаблон home_page.html:

{% extends 'shared/_base.html' %}
{% load base_tags %}
{% load i18n %}
{% load render_partial %}
{% load static %}
{% load ratings %}
{% load thumbnail %}


<div class="row">
    <div class="col-lg-12">
        <div class="tab-content">
            <div id="recent" class="tab-pane fade show active">
                <div class="row  product-slider">
                        {% popular_products %}
                </div>
            </div>
       </div>
  </div>

popular_product_slider.html

{% for product in popular_products %}
    {{product.image}}
    {{product.detail}}
    {{product.title}}
{% endfor %}
       

views.py

def home_page(request):
    context = {}
    return render(request, 'Home_page.html', context)



 

вам нужно разместить ваш код в home_page.html в блоке. xxx - это название блока, который вы разместили в _base.html

{% block xxx %}
   <div class="row">
       <div class="col-lg-12">
           <div class="tab-content">
               <div id="recent" class="tab-pane fade show active">
                   <div class="row  product-slider">
                        {% popular_products %}
                   </div>
               </div>
          </div>
      </div>
   </div>
{% endblock %}

В какой-то момент вы реализовали что-то вроде {% block content %}. Вы должны закрыть его в конце:

{% block content %}
    # things in that block/segment
{% endblock %}    # or better: {% endblock content %}

он может быть в вашем основном шаблоне или в любом, который вы расширяете/включаете, например, в 'base.html'.

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