Шаблоны маконов Pylons: отладка ошибок «Internal Server Error» / «NoneType» - PullRequest
2 голосов
/ 08 февраля 2011

Я часто сталкиваюсь с этой ошибкой в ​​шаблонах Mako с использованием Pylons 0.9.7:

AttributeError: 'NoneType' object has no attribute 'decode'

Обычно я вводил имя переменной, которая не существует, пытался использоватьlinbebreak в строке кода или другая незначительная ошибка.Определенно моя ошибка.

Это приводит к «Внутренней ошибке сервера» в браузере, к тому же в представлении отладки и трассировке стека, которая начинается в HTTPServer и заканчивается AttributeError в mako / exceptions.py.

Что я могу сделать, чтобы облегчить отладку, например, найти строку, на которой генерируется исключение в шаблоне Mako?Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 марта 2011

В моем случае оказывается, что в моем шаблоне произошла ошибка деления на 0. Это приводило к внутренней ошибке сервера и очень бесполезной трассировке стека в выводе консоли.

Я знаю, это звучит так, как будто у меня не должно было быть такой логики в шаблоне, но в этом случае я думаю, что это имеет смысл сделать. Вот трассировка стека, которую я получаю с делением на 0:

Exception happened during processing of request from ('127.0.0.1', 50681)
Traceback (most recent call last):
  File "/Library/Python/2.6/site-packages/Paste-1.7.4-py2.6.egg/paste/httpserver.py", line 1068, in process_request_in_thread
    self.finish_request(request, client_address)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py", line 320, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py", line 615, in __init__
    self.handle()
  File "/Library/Python/2.6/site-packages/Paste-1.7.4-py2.6.egg/paste/httpserver.py", line 442, in handle
    BaseHTTPRequestHandler.handle(self)
  File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/BaseHTTPServer.py", line 329, in handle
    self.handle_one_request()
  File "/Library/Python/2.6/site-packages/Paste-1.7.4-py2.6.egg/paste/httpserver.py", line 437, in handle_one_request
    self.wsgi_execute()
  File "/Library/Python/2.6/site-packages/Paste-1.7.4-py2.6.egg/paste/httpserver.py", line 287, in wsgi_execute
    self.wsgi_start_response)
  File "/Library/Python/2.6/site-packages/Paste-1.7.4-py2.6.egg/paste/cascade.py", line 130, in __call__
    return self.apps[-1](environ, start_response)
  File "/Library/Python/2.6/site-packages/Paste-1.7.4-py2.6.egg/paste/registry.py", line 375, in __call__
    app_iter = self.application(environ, start_response)
  File "/Library/Python/2.6/site-packages/Pylons-0.9.7-py2.6.egg/pylons/middleware.py", line 201, in __call__
    self.app, environ, catch_exc_info=True)
  File "/Library/Python/2.6/site-packages/Pylons-0.9.7-py2.6.egg/pylons/util.py", line 94, in call_wsgi_application
    app_iter = application(environ, start_response)
  File "/Library/Python/2.6/site-packages/WebError-0.10.2-py2.6.egg/weberror/evalexception.py", line 235, in __call__
    return self.respond(environ, start_response)
  File "/Library/Python/2.6/site-packages/WebError-0.10.2-py2.6.egg/weberror/evalexception.py", line 483, in respond
    return debug_info.content()
  File "/Library/Python/2.6/site-packages/WebError-0.10.2-py2.6.egg/weberror/evalexception.py", line 545, in content
    result = tmpl_formatter(self.exc_value)
  File "/Library/Python/2.6/site-packages/Pylons-0.9.7-py2.6.egg/pylons/error.py", line 43, in mako_html_data
    css=False)
  File "/Library/Python/2.6/site-packages/Mako-0.3.2-py2.6.egg/mako/template.py", line 189, in render
    return runtime._render(self, self.callable_, args, data)
  File "/Library/Python/2.6/site-packages/Mako-0.3.2-py2.6.egg/mako/runtime.py", line 403, in _render
    _render_context(template, callable_, context, *args, **_kwargs_for_callable(callable_, data))
  File "/Library/Python/2.6/site-packages/Mako-0.3.2-py2.6.egg/mako/runtime.py", line 434, in _render_context
    _exec_template(inherit, lclcontext, args=args, kwargs=kwargs)
  File "/Library/Python/2.6/site-packages/Mako-0.3.2-py2.6.egg/mako/runtime.py", line 457, in _exec_template
    callable_(context, *args, **kwargs)
  File "memory:0x1040470d0", line 54, in render_body
  File "/Library/Python/2.6/site-packages/Mako-0.3.2-py2.6.egg/mako/exceptions.py", line 88, in __init__
    self.records = self._init(traceback)
  File "/Library/Python/2.6/site-packages/Mako-0.3.2-py2.6.egg/mako/exceptions.py", line 166, in _init
    line = line.decode('ascii', 'replace')
AttributeError: 'NoneType' object has no attribute 'decode'
----------------------------------------
0 голосов
/ 14 февраля 2011

Я не совсем уверен, что это та же проблема, но, насколько я помню, это часто случалось, когда вы выполняете AJAX-загрузку фрагментов страницы. Тогда вы не получите ничего более полезного, чем это сообщение.

Однако, если вы попытаетесь загрузить адрес самого запроса AJAX в свой браузер (при необходимости заменив параметры записи на параметры get, вы получите «обычную» страницу отладки.

...