Pylons mako 模板:调试“内部服务器错误” /“无类型”错误
我经常在使用 Pylons 0.9.7 的 Mako 模板中遇到此错误:
AttributeError: 'NoneType' object has no attribute 'decode'
通常我输入了一个不存在的变量名称,尝试使用代码行中的 linbebreak 或其他一些小错误。绝对是我的错。
这会导致浏览器中出现“内部服务器错误”,调试视图中也会出现同样的情况,以及堆栈跟踪从 HTTPServer 开始并以 mako/exceptions.py 中的 AttributeError 结束。
我可以做些什么来使其更容易调试,例如找出 Mako 模板中生成异常的行?谢谢!
I frequently encounter this error in Mako templates using Pylons 0.9.7:
AttributeError: 'NoneType' object has no attribute 'decode'
Usually I've entered a variable name that doesn't exist, tried to use a linbebreak within a code line, or some other minor error. Definitely my fault.
This results in a 'Internal Server Error' in the browser, same thing in the debug view, and a stack trace that starts in HTTPServer and ends with the AttributeError in mako/exceptions.py.
Is there anything I can do to make this easier to debug, like find out the line that exception is being generated on within the Mako template? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我不太确定这是同一个问题,但据我记得,当您使用 AJAX 加载页面片段时,这种情况经常发生。那么你就不会得到比这条消息更有用的信息了。
但是,如果您尝试在浏览器中加载 AJAX 请求本身的地址(如果需要,将 post 参数替换为 get 参数),您将得到一个“正常”调试页面。
I am not absolutely sure that it's the same issue, but as far as I remember this used to happen a lot when you do AJAX loads of page fragments. Then you don't get anything more useful than this message.
However if you try to load the address of the AJAX request itself in your browser (replacing post parameters with get parameters if needed), you will get a "normal" debug page.
就我而言,事实证明我的模板中存在除以 0 的错误。这会产生内部服务器错误,并在控制台输出中产生非常无用的堆栈跟踪。
我知道,听起来我无论如何都不应该在模板中使用这种逻辑,但在这种情况下,我认为这样做是有意义的。这是我除以 0 后得到的堆栈跟踪:
In my case, it turns out there was a division by 0 error in my template. That was yielding an internal server error, and a very unhelpful stack trace in console output.
I know, it sounds like I shouldn't have had that logic in a template anyway, but in this case, I think it makes sense to do so. Here's the stack trace I get with division by 0: