Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Проверка существования перменной между собственными тегами [RSS Feed]

#1 Март 20, 2017 11:41:24

feofs
Зарегистрирован: 2016-04-20
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка существования перменной между собственными тегами

Добрый день.
Подскажите как отследить, то бишь сделать проверку, что переменная есть между тегами
Мне нужно проверить чтобы переменная {{var}}, есть между тегами {% mystyle %} {{var}}
{% endmystile %}
Сделал так

 try:
        var=context['var']
    except ValueError:
        msg='No var in context'
Но это не правильно, т.к проверяем по всему контексту шаблона, а мне нужно именно между тегами.


 #Предположим что есть конструкция собственных тегов такого вида
#внутри тега mystyle должен добавляться + к переменной
#{% myapper %}
#   {% mystyle %} {{var}} {% endmystile %}
# {% endmyapper %}
@register.tag
def myapper(parser,token):
    nodelist=parser.parse(('endmyapper',))
    parser.delete_first_token()
    return RenderMyUpper(nodelist)
class RenderMyUpper(template.Node):
    def __init__(self,nodelist):
        self.child_nodelists=nodelist
    def render(self, context):
        output=self.child_nodelists.render(context)
        return output
@register.tag(takes_context=True)
def mystyle(context,parser,token):
    try:
        tag_name=token[0]
    
    except ValueError:
        msg='No valid tag name'
        raise template.TemplateSyntaxError(msg)
    #Теперь проверим существование нужной переменной между тегами
    try:
        var=context['var']
    except ValueError:
        msg='No var in context'
        raise template.TemplateSyntaxError(msg)
    return RenderMyStyle(var)
class RenderMyStyle(template.NodeList):
    def __init__(self,var):
        self.var=var
    def render(self, context):
        return '+'+self.var

Отредактировано feofs (Март 20, 2017 11:43:02)

Офлайн

#2 Март 27, 2017 14:34:46

pythonidze
Зарегистрирован: 2017-01-14
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка существования перменной между собственными тегами

Привет, а так не правильнее будет https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#firstof ??

Офлайн

  • Начало
  • » Django
  • » Проверка существования перменной между собственными тегами[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version