Пользовательские теги django: метод визуализации не вызывается - PullRequest
0 голосов
/ 18 октября 2011

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 ''

Внутренняя HTML:

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

Метод рендеринга класса PaymentObjects никогда не вызывается, он идет внутри функции init, но не внутри рендера.

Я искал эту проблему в Google, но не получил удовлетворительного ответа, который мог бы решить эту проблему.

Любой совет будет с благодарностью, спасибо.

1 Ответ

2 голосов
/ 18 октября 2011

register.simple_tag используется для функций тегов, которые немедленно возвращают результат (Django создает узел для вас). Если вы хотите вернуть свой собственный узел, используйте register.tag.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...