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,
InformationsquelleAutor der Frage Eric | 2010-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nachdem ich einige weitere test habe ich die Antwort gefunden :
Indem Sie die gleiche Vorlage-test, direkt unter python, ohne mit django debug-Meldungen vorhanden sind. So kommt es von django.
Der fix kommt settings.py : Man setzt den DEBUG auf True UND legen Sie TEMPLATE_DEBUG auf False.
InformationsquelleAutor der Antwort Eric
Aus der Jinja2 Dokumentation:
http://jinja.pocoo.org/2/documentation/faq#my-tracebacks-look-weird-what-s-happening
InformationsquelleAutor der Antwort Travis Bradshaw