问题描述:
博客开发,包括文章、分类、标签、评论等models。页面暂展示在admin端。当将这几类模型注册到admin并进行文章编辑等工作时提示如下错误:
`
if response.has_header('Vary'):
AttributeError: 'AttributeError' object has no attribute 'has_header'
request to response cost: 0.76s
[18/Aug/2021 14:12:24] "GET /admin/comment/comment/ HTTP/1.1" 500 69600
`
解决方案:
在网上搜了很长时间,找到一篇相关的Stack Overflow问题,可参考:
链接:https://stackoverflow.com/questions/12503298/attribute-error-function-object-has-no-attribute-has-header
但是我的开发代码中并没有自定义模板和response处理,完全是按照admin后台管理的模式开发的。因此,我确定跟模板及response的处理没有关系,而是其他地方出了问题。多亏有git版本控制,我重新revert了所有的改动,慢慢试着一点点的改到出错的地方,终于让我定位到了问题所在:
def __str__(self):
return self.name
原来是我再model中为所有的类都加了同样的str,由于某些model没有name这个字段,导致渲染post等请求时出错。把self.name改成model里存在的字段即可。
当然,出现这个问题的原因不是一对一的关系,只要你用了django admin后台请求出错都是报这个错,所以大家就需要看看最近改了什么代码,影响了哪块功能,目前还没找到比较好的办法查看具体日志错误,只能自己慢慢排查了。
教训
- 做好版本管理,这个真的很重要,不管是自己练手还是团队开发,没有问题的时候显得有点碍事,有问题的时候它就是活救星。
- 做好自测,每改一处都要进行自测,以免影响其他功能,因此在项目开发中,单元测试是必须要有的。
- 学会自己分析问题,不管是参考别人的代码还是书籍,终究没有手把手地教你开发和运行,而且自己会时不时的无意中引入一些bug,所有学会自己分析问题,要有一定的判断力。在网上搜索解决方法的时候学会正确的总结搜索词,看方案也要分析场景跟你遇到的问题是否一致。
- 尽信书不如无书,书上看到的、网上搜到的要去实际验证,经常有些问题是因为你对书上或网上的讲解理解不透彻,时刻保持一颗实践的心,踏踏实实的去验证,这样你学到的东西远比你看到的会多。
在使用Django开发时遇到'AttributeError',提示object has no attribute 'has_header'。通过回滚代码并逐步测试,发现错误源于在model中为所有类添加相同的str方法,但某些model缺少name字段,导致渲染请求时出错。修复方法是将self.name改为存在的字段。强调做好版本管理和自测的重要性,以及遇到问题时自我分析和实践验证的必要性。

2106

被折叠的 条评论
为什么被折叠?



