История изменнения вопроса «Как написать расширение для jinja2?»

  • 2
    Версия №2
    изменил 524 дня назад Аватор пользователя tc tc
    718 15

    Как написать расширение для jinja2?

    Хочу научиться разрабатывать расширения для jinja2. По какому принципу их создавать? Пока осилил такой код:

    
    class MediaExtension(Extension):
    
        tags = ['media']
    
        def parse(self, parser):
            stream = parser.stream
            tag = stream.next()
    
            args = [parser.parse_expression()]
    
            if parser.stream.skip_if('comma'):
                args.append(parser.parse_expression())
            else:
                args.append(nodes.Const(None))
            print args
            lineno = stream.current.lineno
    
            return  nodes.CallBlock(
                self.call_method('_media', args),[], [], None).set_lineno(lineno)
    
        def _media(self, path, params='', caller=None):
            print caller
            print "test2"
            return u"test"
    
    

    Пока получаю такую ошибку: 'NoneType' object is not iterable

    Не пойму вот какой момент. Что должен возвращать метод parser? Что должен принимать и возвращать _media?

  • 1
    957 дней назад Аватор пользователя Alexandr Alexandr
    313 15

    Как написать расширение для jinja2?

    Хочу научиться разрабатывать расширения для jinja2. По какому принципу их создавать? Пока осилил такой код:

    
    class MediaExtension(Extension):
    
        tags = ['media']
    
        def parse(self, parser):
            stream = parser.stream
            tag = stream.next()
    
            args = [parser.parse_expression()]
    
            if parser.stream.skip_if('comma'):
                args.append(parser.parse_expression())
            else:
                args.append(nodes.Const(None))
            print args
            lineno = stream.current.lineno
    
            return  nodes.CallBlock(
                self.call_method('_media', args),[], [], None).set_lineno(lineno)
    
        def _media(self, path, params='', caller=None):
            print caller
            print "test2"
            return u"test"
    
    

    Пока получаю такую ошибку: 'NoneType' object is not iterable

    Не пойму вот какой момент. Что должен возвращать метод parser? Что должен принимать и возвращать _media?