Tôi đang sử dụng hệ thống mẫu jinja2 vào django. Nó thực sự nhanh và tôi rất thích nó. Tuy nhiên, tôi có một số vấn đề để gỡ lỗi mẫu: Nếu tôi thực hiện một số lỗi vào mẫu (thẻ không hợp lệ, tên tệp không hợp lệ, phần cuối của khối ...), tôi không có tất cả thông tin về lỗi này.Làm cách nào để gỡ lỗi mẫu Jinja2?
Ví dụ, Trong một cái nhìn django, tôi viết những dòng này:
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)
tôi viết một mẫu jinja2: jinja.html:
{{myvar|notexistingfilter()}} Jinja !
Chú ý, tôi đặt vào mục đích một bộ lọc không tồn tại để tạo lỗi:
Tôi đã mong đợi một cái gì đó như "notexistingfilter() không được xác định", nhưng tôi chỉ nhận được một màu đen đơn giản trên traceback trắng (không phải thông báo lỗi django thông thường):
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
Tôi không nhận được tên tệp mẫu nơi lỗi xảy ra, không có thông tin về lỗi, do đó rất khó gỡ lỗi jinja2.
Tôi nên làm gì để có thêm thông tin gỡ lỗi và tìm nơi có lỗi trong mẫu jinja2?
Cảm ơn bạn trước,
Tại sao bạn không sử dụng các mẫu của Django? Chúng gần giống với Jinja2 và bạn nhận được thông báo lỗi thực sự. Tại sao không chỉ đơn giản là quay trở lại các mẫu của Django? –
Phần dưới của công thức này có một số gợi ý tại sao sử dụng Jinja2 thay vì các mẫu của Django: http://appengine-cookbook.appspot.com/recipe/upgrade-the-django-templating-system-to-jinja2/ –
@S. Lott kinh nghiệm của tôi là các mẫu của Django không có gì giống như Jinja. Các mẫu Django buộc tôi phải tách riêng tính toán và logic khỏi các mẫu/bản trình bày của tôi. Đây là một nỗi đau lớn trong mông khi tôi muốn làm một cái gì đó như, nói, gọi chức năng của một đối tượng với các đối số. Tôi là tất cả cho thiết kế mẫu tốt, nhưng không ép buộc nó bằng cách làm tê liệt hệ thống templating, khuyến khích nó với thiết kế tốt của hệ thống đó và tài liệu tốt về thực hành tốt nhất. –