0
payment-tags.pyDjango的自定義模板標籤:渲染方法不叫
@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類從未被調用的方法,這是不言而喻的初始化函數裏面但不是內部渲染..
我已經在谷歌搜索這個問題,但沒有得到任何滿意的答案,可以解決這個問題。
任何意見將不勝感激,謝謝。
感謝您的回答,但在這種情況下,我應該如何發送我需要發送的參數,即request.user.id,因爲當我將其更改爲標記時會給出錯誤「has_purchased()只需要1個參數(2給出)「 – Neo
@Neo:你需要自己解析參數。標籤有兩個參數,'parser'和'token'。 [閱讀文檔](https://docs.djangoproject.com/en/1.3/howto/custom-template-tags/#writing-custom-template-tags)。 –
非常感謝.. :) – Neo