Comment déboguer Jinja2 modèle?

Je suis en utilisant jinja2 système de template dans django.
Il est vraiment rapide et je l'aime beaucoup.
Néanmoins, j'ai quelques problème pour déboguer les modèles de :
Si je fais quelques erreurs dans un modèle (balise incorrecte, une mauvaise filtername, mauvaise fin de bloc...), je n'ai pas du tout d'informations sur cette erreur.

Par exemple, Dans un django vue, j'écris ceci :

from jinja2 import Environment, PackageLoader
env = Environment(loader=PackageLoader('main', 'templates'))

def jinja(req):
    template = env.get_template('jinja.html')
    output=template.render(myvar='hello')
    return HttpResponse(output)

J'écris un jinja2 modèle : jinja.html :

{{myvar|notexistingfilter()}} Jinja !

Avis, je l'ai mis sur un but non filtre existant pour générer une erreur :

Je m'attendais à quelque chose comme "notexistingfilter() non définie", mais j'ai eu seulement un simple noir sur blanc traceback (pas l'habitude de django debug message) :

Traceback (most recent call last):

  File "/usr/local/lib/python2.6/dist-packages/django/core/servers/basehttp.py", line 279, in run

    self.result = application(self.environ, self.start_response)

  File "/usr/local/lib/python2.6/dist-packages/django/core/servers/basehttp.py", line 651, in __call__
    return self.application(environ, start_response)


  File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/wsgi.py", line 241, in __call__
    response = self.get_response(request)

  File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 134, in get_response

    return self.handle_uncaught_exception(request, resolver, exc_info)

  File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 154, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)


  File "/usr/local/lib/python2.6/dist-packages/django/views/debug.py", line 40, in technical_500_response
    html = reporter.get_traceback_html()

  File "/usr/local/lib/python2.6/dist-packages/django/views/debug.py", line 84, in get_traceback_html

    self.get_template_exception_info()

  File "/usr/local/lib/python2.6/dist-packages/django/views/debug.py", line 117, in get_template_exception_info
    origin, (start, end) = self.exc_value.source



TypeError: 'Template' object is not iterable

Je n'ai pas le modèle de nom de fichier dans lequel l'erreur s'est produite, aucune informations à propos de l'erreur elle-même, de sorte qu'il est très difficile à déboguer jinja2.

Que dois-je faire pour avoir plus d'informations de débogage et de trouver des cas où une erreur est à l'intérieur d'un jinja2 modèle ?

Je vous remercie à l'avance,

  • Pourquoi n'êtes-vous pas à l'aide de Django reinhardt, des modèles? Ils sont presque les mêmes que Jinja2 et vous obtenez de véritables messages d'erreur. Pourquoi ne pas tout simplement revenir à Django modèles?
  • Le fond de cette recette a quelques suggestions pourquoi utiliser Jinja2 au lieu de Django modèles: appengine-cookbook.appspot.com/recipe/...
  • mon expérience a été que de Django reinhardt, les modèles ne sont en rien Jinja. Modèles Django m'a forcé à me séparer de calcul et de logique à partir de mes modèles/présentation. Cela a été une grande douleur dans le cul quand j'ai voulu faire quelque chose, comme, par exemple, appeler un objet de fonction avec des arguments. Je suis pour la bonne conception de modèle, mais ne force pas en paralysant le système de template, l'encourager avec une bonne conception de ce système et une bonne documentation sur les meilleures pratiques.
  • Wow. J'ai simplement utilisé votre suggestion/réponses à propos de la configuration TEMPLATE_DEBUG = False, et maintenant, pour la première fois que je suis réellement obtenir message d'erreur significatif de Jinja!!! J'ai été le débogage de mes modèles par essai et erreur, commentaire-out, un-commentaire-out, ce tout le temps. Votre réponse doit être quelque part plus importante sur le web, c'est d'une grande aide!
InformationsquelleAutor Eric | 2010-01-04