我最近将Django 1.8迁移到Django 1.11,一切似乎都正常运行,但是在生产中,经过一段时间的正确运行,Django开始返回如下消息:
AttributeError:“ NoneType”对象没有属性“ objects” AttributeError:“ NoneType”对象不可调用
用户无法继续使用该应用程序,每个操作都返回一个“内部服务器错误”(均与“ NoneType”对象有关……)。甚至我自定义的Django 500错误模板也没有显示。
Django在Apache / WSGI上运行。
通常看来,类和对象突然是“ NoneType”对象。
重新加载Apache服务器后,一段时间后一切恢复正常,错误再次出现(几小时后)。
我还没有找到指向错误原因的特定日志错误。
调试这种零星的行为变化的最佳方法是什么?有谁知道如何解决这类错误?
相同的代码在Django 1.8的其他实例中运行并且正常工作。
添加有关回溯的其他信息:
回溯指向这样的一行:
blogs = Blog.objects.filter(author = request.user)
该行与适用于Django 1.8的代码完全相同。
回溯看起来像这样,没有太多细节。
AttributeError 'NoneType'对象没有属性'objects' 第65行的 init 中的uploader / forms.py 从以下位置调用:addons_settings中的myapp / myapp_context_processors.py
答案 0 :(得分:1)
最后,我找到了解决方案。在更详细地查看了该异常的先前错误之后,我发现了一个总是在NoneType
错误之前的某个时间发生的错误。
我遇到了这个错误:
RuntimeError: Model class myapp.users.models.User doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
由于某种原因,服务器在此错误后“崩溃”。
对我来说,解决方案是将myapp / views.py中的代码移动到myapp / users / views.py,从myapp / views.py导入模型会导致RuntimeError以及随后导致应用程序崩溃的错误