属性错误:'NoneType'对象没有属性"较低";密码验证



注册用户时,会根据不允许的密码列表检查所需的用户密码。然而,当密码被传递给验证器方法时,会引发以下错误:

AttributeError: 'NoneType' object has no attribute 'lower'

为什么在passwordNone的情况下调用validate()方法,而事实上它是真的?


from django.contrib.auth.models import User
from django.contrib.auth.password_validation import (
validate_password, CommonPasswordValidator, NumericPasswordValidator
)
from rest_framework import serializers

class LoginSerializer(UsernameSerializer):
password = serializers.RegexField(
r"[0-9A-Za-z]+", min_length=5, max_length=8
)
def validate(self, data):
username = data['username']
password = data['password']
try:
validate_password(password, password_validators=[
CommonPasswordValidator, NumericPasswordValidator
])
except serializers.ValidationError:
if username == password:
pass
raise serializers.ValidationError("Invalid password")
else:
return data
class Meta:
fields = ['username', 'password']
model = User
-> for validator in password_validators:
(Pdb) n
> authpassword_validation.py(46)validate_password()
-> try:
(Pdb) n
> authpassword_validation.py(47)validate_password()
-> validator.validate(password, user)
(Pdb) password
'Bingo'
(Pdb) user
(Pdb) password
'Bingo'
(Pdb) s
--Call--
> authpassword_validation.py(180)validate()
-> def validate(self, password, user=None):
(Pdb) password
(Pdb) n
> djangocontribauthpassword_validation.py(181)validate()
-> if password.lower().strip() in self.passwords:
(Pdb) n
AttributeError: 'NoneType' object has no attribute 'lower'
if password and ...:

这会检查它是否有一个值,以及该值是否满足的其他条件

最新更新