让Django追溯查明错误发生的位置?

时间:2017-09-27 18:44:51

标签: django

我有两个关于Django追溯的问题。

首先,如果我有如下所示的回溯,我可以看到错误发生在'review_new_profile'视图中,如第二个回溯错误所示 下面。是否有可能告诉Django还在该视图中显示错误发生的行号?

/srv/http/example.com/venvs/725be8a8537aeef8021231ba68de3184bbd547b1/local/lib/python2.7/site-packages/django/core/handlers/base.py in get_response
1.  response = wrapped_callback(request, *callback_args, **callback_kwargs)

/srv/http/example.com/repo/profile/views.py in review_new_profile
1.  user = User.objects.get(id=request.session['uid'])

/srv/http/example.com/venvs/725be8a8537aeef8021231ba68de3184bbd547b1/local/lib/python2.7/site-packages/django/contrib/sessions/backends/base.py in __getitem__
1.  return self._session[key]

我希望看到的是下面的内容,其中'540'是views.py中的行号:

/srv/http/example.com/repo/profile/views.py in review_new_profile (540)
1.  user = User.objects.get(id=request.session['uid'])

第二,我是否认为错误实际发生在最底线?因此对此跟踪的解释是Django尝试生成对请求的响应,但是当它尝试获取给定uid的用户实例时,它无法在会话中找到uid?换句话说,错误实际上发生在回溯的最后一行,Django试图从会话中获取uid(密钥)?

1 个答案:

答案 0 :(得分:0)

对于你的第一个问题,Django确实显示了这一行。在您的情况下,那些1是行号。真正的问题是为什么它们都是1 s。

第二个问题:你是对的。异常发生在最后一行。 基本上,当您执行request.session['uid']时,它会尝试调用session对象的__getitem__方法。在__getitem__内的某处,有这一行:

   return self._session[key]

这就是错误。