개체의 항목 모음이있는 문자열을 반환하는 템플릿 태그를 구현해야합니다.장고 사용자 지정 템플릿 태그 구현 문제
나는 다음과 같은 구조를 만들었다:
produtos/
templatetags/
__init__.py
produto_tags.py
produto_tags.py :
# -*- coding: utf-8 -*-
from django import template
from django.template import Node
from produto.models import Produto
from django.template.loader import render_to_string
register = template.Library()
@register.tag
def get_all_tags(parser, token):
args = token.split_contents()
return ProdutoTemplateNode(args[1])
class ProdutoTemplateNode(Node):
def __init__(self, produto):
self.produto = produto
def render(self, context):
list = []
produto = template.Variable(self.produto).resolve(context)
tags = produto.tags.all()
if tags:
for tag in tags:
list.append(tag.name)
return ", ".join(list)
else:
return u'Não existem tags para este produto'
템플릿 :
{% load produto_tags %}
...
{% for produto in produtos %}
<li id="{{ produto.ordenacao }}" data-tags="{% get_all_tags produto %}">
...
</li>
{% endfor %}
</ul>
{% else %}
<p>Não existem produtos cadastrados no sistema</p>
{% endif %}
나는이 오류 받고 있어요 :
TemplateSyntaxError at /concrete/nossos-sites.html
Invalid block tag: 'get_all_tags', expected 'empty' or 'endfor'
을
나는 태그가 존재하지 않고 그럴듯한 것처럼 보이는 경우 사람들이이 오류를 말한 다른 스레드를 읽었습니다. 나는 djangoproject.com 문서를보고 있었고 무슨 일이 일어날 지에 대한 단서를 찾을 수 없었다.
감사합니다.
필터는'@ register.tag'이 아니라'@ register.filter'를 사용합니다. –