5 votes

Comment gérer gracieusement les NameError et AttributeError dans l'environnement d'exécution Mako?

J'ai trouvé que tenter d'accéder à une variable non définie dans un template Mako provoque une NameError, et c'est assez logique. Dans certaines applications, cependant, il est souhaitable d'échouer de manière plus gracieuse, en substituant peut-être la chaîne vide en cas d'erreur (AttributeError est une autre option). C'est le comportement par défaut dans le langage de template Django. Existe-t-il un moyen d'obtenir ce comportement en Mako?

12voto

David Eyk Points 3166

Eh bien, il s'avère qu'un peu plus de recherche sur Google le montre clairement :

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

Maintenant, les variables non définies produiront la chaîne vide.

Lecture de la source de la valeur d'origine de UNDEFINED est éclairante :

class Undefined(object):
    """Représente une valeur indéfinie dans un modèle.

    Tous les modules de modèle ont une valeur constante
    ``UNDEFINED`` présente qui est une instance de cet
    objet.

    """
    def __str__(self):
        raise NameError("Indéfini")
    def __nonzero__(self):
        return False

Et voilà. Merci, Google.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X