Как можно изящно обрабатывать NameError и AttributeError в среде исполнения Mako? - PullRequest
4 голосов
/ 09 сентября 2011

Я обнаружил, что попытка получить доступ к неопределенной переменной в шаблоне Mako поднимает NameError, и вполне логично. Однако в некоторых приложениях желательно более плавно завершать работу, возможно, заменяя пустую строку такими ошибками (AttributeError - другой кандидат). Это поведение по умолчанию в языке шаблонов Django. Есть ли способ получить такое поведение в Мако?

1 Ответ

11 голосов
/ 10 сентября 2011

Ну, получается, что немного больше прибегая к помощи делает это простым :

import mako.runtime
mako.runtime.UNDEFINED = ''

Теперь неопределенные переменные будут создавать пустую строку.

Чтение источника исходного значения UNDEFINED является поучительным:

class Undefined(object):
    """Represents an undefined value in a template.

    All template modules have a constant value 
    ``UNDEFINED`` present which is an instance of this
    object.

    """
    def __str__(self):
        raise NameError("Undefined")
    def __nonzero__(self):
        return False

И там мы идем. Спасибо, Google.

...