django自定义模板标签:未调用render方法

时间:2011-10-18 11:17:46

标签: django django-templates

payment-tags.py

@register.simple_tag
def has_purchased(user_id):
  payments = Payment.objects.all(user__id=user_id)
  return PaymentObjects(payments)

class PaymentObjects(template.Node):
  def __init__(self, payments):
    print 'inside init'
    self.payments_obj = payments

  def render(self, context):
    print 'inside render'
    context['payments'] = self.payments_obj
    return ''

Indside html:

{% load payment-tags %}
{% has_purchased request.user.id %}

PaymentObjects类的render方法永远不会被调用,它进入init函数但不进入render ..

我在谷歌搜索过这个问题,但没有得到任何可以解决问题的满意答案。

非常感谢任何建议,谢谢。

1 个答案:

答案 0 :(得分:2)

register.simple_tag用于立即返回结果的标记函数(Django为您创建节点)。如果要返回自己的节点,请改用register.tag