2011-02-07 68 views
2

我经常遇到马可这个错误模板中使用塔0.9.7:塔MAKO模板:调试“内部服务器错误” /“NoneType”错误

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

通常我已经进入了一个变量名不存在,试图在代码行中使用linbebreak或其他一些小错误。肯定是我的错。

这导致在浏览器中的“内部服务器错误”,在调试视图同样的事情,它始于HttpServer的,并与灰鲭/ exceptions.py的AttributeError的结束的堆栈跟踪。

有什么我可以做,使这更容易调试,如发现正在生成异常的Mako的模板中的行?谢谢!

+0

完整的堆栈跟踪肯定会有所帮助。当你能够在模板中追踪到一行时更好。 – 2011-02-07 22:13:39

回答

0

在我的情况下,原来有一个师在我的模板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

我没有绝对的把握,这是同样的问题,但据我记得这个曾经当你的页面片断AJAX负荷发生了很多。那么你没有得到比这条消息更有用的东西。

但是,如果你尝试加载AJAX请求本身在浏览器的地址(如需要可GET参数替换后的参数),你会得到一个“正常”的调试页面。

+0

感谢洛克斯,这是有益的建议。不是我特别的问题,但它是很好记。在这种情况下,您还可以在控制台上查找调试URL,然后将其粘贴到浏览器中以使用真棒交互式调试器。 – mrjf 2011-03-10 06:16:43