Django 报错 'WSGIRequest' object has no attribute 'data' 的一个解决方法
报错截图
报错描述
之前写Django后台的时候没遇到过这个bug,是今天写项目才遇到的bug
报错分析
看报错,是出在一个自定义的权限认证函数中,在仔细看看报错,发现是后台登录使用了自定义的权限认证类
在Pycharm中用 Ctrl + shift + N
输入文件地址,找到这个文件__init__.py
的77行对应的函数调用,
再 Ctrl + 鼠标左键
点击查看 这个backend从哪里来的
现在可以看到,这个_get_backends
函数很可疑,我们再跳转看一下
到这里真相水落石出了,
get_backends
函数从settings的AUTHENTICATION_BACKENDS
里面寻找权限认证类,然而我忘了添加自带的权限认证类,只有我自定义的权限认证类,所以这个函数就使用了自定义的权限认证类。
解决方案
添加 django.contrib.auth.backends.ModelBackend
即可解决问题
一丢丢心得
暑假写的项目,可以说通过这个项目,对Django有了更深入的了解,也学会了往底层找问题,重写某些类的方法,之后浅浅分享一下Pycharm写Django的心得吧。
最后想说,写这个项目好难,又好累,还是好好学习吧。
评论