[英]How to debug Jinja2 template?
我正在使用jinja2模板系統進入django。 這真的很快,我很喜歡它。 不過,我調試模板時遇到了一些問題:如果我在模板中犯了一些錯誤(錯誤的標簽,壞的filtername,壞的結尾......),我根本沒有關於這個錯誤的信息。
例如,在django視圖中,我寫這個:
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)
我寫了一個jinja2模板:jinja.html:
{{myvar|notexistingfilter()}} Jinja !
注意,我故意生成一個不存在的過濾器來生成錯誤:
我期待像“notexistingfilter()未定義”這樣的東西,但我只有一個簡單的黑色白色追溯(不是通常的django調試消息):
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
我沒有得到錯誤發生的模板文件名,沒有關於錯誤本身的信息,因此調試jinja2非常困難。
我該怎么做才能獲得更多調試信息並找到jinja2模板中的錯誤?
先感謝您,
做了一些測試之后,我找到了答案:
通過直接在python下進行相同的模板測試,不使用django,就會出現調試消息。 所以它來自django。
修復程序位於settings.py中:必須將DEBUG設置為True並將TEMPLATE_DEBUG設置為False。
來自Jinja2文檔:
我的追溯看起來很奇怪。 發生了什么?
如果未編譯speedups模塊並且您使用的是沒有ctypes的Python安裝(沒有ctypes的Python 2.4,Jython或Google的AppEngine),Jinja2無法提供正確的調試信息,並且回溯可能不完整。 目前沒有針對Jython或AppEngine的良好解決方法,因為ctypes在那里不可用,並且不可能使用speedups擴展。
http://jinja.pocoo.org/2/documentation/faq#my-tracebacks-look-weird-what-s-happening
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.