Пользовательский шаблон тега функция не вызывает - PullRequest
0 голосов
/ 26 июля 2011

Код шаблона:

{% extends 'some.html' %}
{% load tag %}
{% get_rate land contDetails.postcode contDetails.county title uid LsAff.aff_id LsAff.group_id %}

Пользовательский тег шаблона:

 from django import template
 from process.utils.error_handler import  debug_logger
 from django.template import Library, Node, TemplateSyntaxError
 class land(template.Node):
   def __init__(self, var):
      self.varname = template.Variable(var)
      debug_logger().info(self.varname)

   def render(self, context):
     debug_logger().info("hello")
     user = self.varname.resolve(context)
     debug_logger().info("hello")
     debug_logger().info(user)
     return "somestring"

def get_rate(parser, token):
   debug_logger().info("hell")
   bits=token.split_contents()
   var=bits[2]
   debug_logger().info(var)
   return land(var)
register = template.Library()
register.tag('get_rate', get_rate)

В приведенном выше коде def render (self, context): функция не вызывается. До debug_logger (). Info (self.varname) утверждение, что код работает правильно.

Я что-то упустил? помогите пожалуйста найти решение для вызова render (self, context)

1 Ответ

1 голос
/ 26 июля 2011

Я настроил функцию быстрого просмотра и скопировал ваш тег.Я сократил количество аргументов до двух для краткости.У меня все работает нормально.

#views.py
from django.shortcuts import render

def test_view(request):
    return render(request, 'test.html', {'var' : True})

#tag.py
from django import template

register = template.Library()

@register.tag('get_rate')
def get_rate(parser, token):
    bits = token.contents.split()
    var = bits[2]
    return LandNode(var)

class LandNode(template.Node):
    def __init__(self, var):
        self.varname = template.Variable(var)

    def render(self, context):
        varname = self.varname.resolve(context)
        return 'some string'

#test.html
{% load tag %}
{% get_rate 'foo' var %}

Визуализации:

some string

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

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