我在我目前正在处理的应用上遇到这个奇怪的AttributeError
。我正在开发使用开发Web服务器,即" runserver" django工具集的命令。然后我决定在 apache + mod-wsgi 上测试应用程序,虽然它有时可以正常工作但我仍然坚持这个错误。所以我觉得这段代码一定有问题,
所以我决定将其评论,看看会发生什么。并且是,它仍然给我同样的错误(见第2张图片)。< - 现在不相关。 我犯了自定义用户模型的属性错误,即使它实际上包含classmethod get_by_type_and_id()
也是我感兴趣的。
你以前见过这样的吗?你认为这是怎么回事?我已按照教程here进行部署。请注意,User
不是内置的django User
模型。我认为这是一个定制的,精简的"基于django的Auth
模块的实现。
请注意,我没有在使用django自己的开发服务器进行开发时遇到此错误。这只发生在我在Apache + mod_wsgi上部署应用程序时。
更多信息:
Django版本== 1.2.5
谢谢!我真的很感激任何帮助。
第一张图片:
第二张图片:
答案 0 :(得分:0)
经过几个小时的潜入代码,我有一个尤里卡时刻。所以我想,也许在某些时候django.contrib.auth.models.User
模型正在由应用程序中使用的一些django模块付诸行动。因为就像我提到的那样,这个应用程序的用户模型是自定义的,应用程序至少不是直接使用django.contrib.auth.*
。这是我的怀疑,因为这种错误不是特定于该特定属性。有时它会通过该点,但是在引用其他用户模型属性的其他视图上会出现另一个AttributeError。然后有一次我注意到错误消息中User的属性是django.contrib.auth.models.User的属性。
所以我决定在我的python路径上“删除”django.contrib.auth.models,并在那里显示,我正在使用的其中一个模块django.contrib.messages
发生错误。我删除了它,我没有再看到AttributeError。事实证明,django的Message
模型有一个对django.contrib.auth.models.User的foreign_key。
然而,我失去了django消息框架的灵活性,特别是当我在HttpResponseRedirect的视图上使用它时,即无法在模板的上下文中放置有用的消息。或者可能有? :)
更新2(非常肯定):
是的,我现在非常确定django.contrib.messages
是导致错误的那个。我尝试在另一个使用自定义用户模型的应用程序上重现错误,即不是django.contrib.auth.models.User。我启用了django.contrib.messages模块并产生了基本相同的错误。我想知道为什么会在Apache + mod_wsgi上发生这种情况,而不是在django自己的开发服务器上发生。
答案 1 :(得分:0)
很少有事情需要注意:
get_by_type_and_id
方法吗?pasword
而不是password
(拼写错误)