Wie kann man die Jinja2-Vorlage debuggen?

Ich bin mit jinja2 template-system in django.
Es ist wirklich schnell und ich mag es sehr.
Trotzdem habe ich einige problem zu Debuggen Vorlagen :
Wenn ich einige machen Fehler in einer Vorlage (schlechter tag, schlechte filtername, schlechtes Ende-block...), ich habe nicht an allen Informationen über diesen Fehler.

Zum Beispiel, In eine django-Blick, als ich dies Schreibe :

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)

Schreibe ich eine jinja2 template : jinja.html :

{{myvar|notexistingfilter()}} Jinja !

Bemerken, legte ich absichtlich eine nicht existierende filter einen Fehler generieren :

Ich hatte etwas erwartet wie "notexistingfilter() nicht definiert ist", aber ich habe nur eine einfache schwarz auf weiß traceback (nicht die üblichen django-debug-Meldung) :

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

Ich komme nicht auf das template mit dem Namen wo der Fehler aufgetreten ist, werden keine Informationen über den Fehler selbst, so ist es sehr schwierig zu Debuggen jinja2.

Was muss ich tun, um mehr debug-Informationen und herauszufinden, wo ein Fehler in einem jinja2 template ?

Vielen Dank im Voraus,

Kommentar zu dem Problem
Warum bist du nicht mit Django Vorlagen? Sie sind fast die gleichen wie Jinja2 und bekommen Sie einen echten Fehlermeldungen. Warum nicht gehen Sie einfach zurück zu Django ' s templates? Kommentarautor: S.Lott
Der Boden dieses Rezept hat einige Vorschläge, warum die Verwendung Jinja2 anstelle von Djangos Template: appengine-cookbook.appspot.com/recipe/... Kommentarautor: Travis Bradshaw
@S. Lott meine Erfahrung war, dass Django Vorlagen waren nichts, wie Jinja. Django-templates gezwungen mich zu trennen, Berechnung und Logik aus meine Vorlagen/Präsentation. Das war ein großer Schmerz in den Hintern, wenn ich wollte, etwas zu tun, sagen, nennen eine Objekt-Funktion mit Argumenten. Ich bin für die gute Vorlage, aber nicht die Kraft es durch lähmende die templating-system, ermutigen, es mit gutem design des Systems und der guten Dokumentation der besten Praktiken. Kommentarautor: Carl G
Wow. Ich habe gerade verwendet Ihre Anregung/Antwort über die Einstellung TEMPLATE_DEBUG = False, und jetzt das erste mal, dass ich bin eigentlich immer aussagekräftige Fehlermeldung aus Jinja!!! Ich war-debugging "meine Vorlagen" trial-and-error, kommentieren, un-Kommentar-out die ganze Zeit. Ihre Antwort muss irgendwo sein, mehr prominent auf dem web, das ist eine riesige Hilfe! Kommentarautor: Carl G

InformationsquelleAutor der Frage Eric | 2010-01-04

Schreibe einen Kommentar