簡體   English   中英

Django:第 121 行的塊標記無效:“popular_products”,應為“endblock”。 您是否忘記注冊或加載此標簽?

[英]Django : Invalid block tag on line 121: 'popular_products', expected 'endblock'. Did you forget to register or load this tag?

我的項目中有一個自定義模板標簽,一切看起來都很好,但是當我想使用這個模板標簽時,我得到了這個錯誤:

第 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 %}

 {% block content %}
    <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 %}

popular_product_slider.html

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

視圖.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 %}

您錯誤地使用了{% popular_products %} 您應該使用{% include 'popular_product_slider.html' %}popular_product_slider.html實現到home_page.html中。

如果您使用帶百分號 ( {% %} ) 的大括號,則第一個值將作為命令。 並且 file 沒有將popular_products識別為命令,它引發了Error

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM