报错截图


报错描述


之前写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的心得吧。

最后想说,写这个项目好难,又好累,还是好好学习吧。