Django 自定义验证功能不工作
my serializers.py:Django 自定义验证功能不工作,django,django-rest-framework,Django,Django Rest Framework,my serializers.py: class LoginSerializer(serializers.Serializer): username = serializers.EmailField(required=True) password = serializers.CharField( style={'input_type': 'password'}, required=True ) remember_me = s
class LoginSerializer(serializers.Serializer):
username = serializers.EmailField(required=True)
password = serializers.CharField(
style={'input_type': 'password'},
required=True
)
remember_me = serializers.BooleanField(required=True)
temp_code = serializers.HiddenField(default='0')
def validate_login(self):
username = self.data["username"]
if not username:
raise serializers.ValidationError('username must not be blank!')
self.temp_code=1
elif len(username) < 6:
raise serializers.ValidationError('username must create atleast 6 characters!')
self.temp_code=2
return value
类登录序列化程序(序列化程序.序列化程序):
username=serializers.EmailField(必需=True)
密码=serializers.CharField(
样式={'input_type':'password'},
必需=真
)
记住_me=serializers.BooleanField(必需=True)
temp_code=serializers.HiddenField(默认值为0)
def验证_登录(自我):
username=self.data[“username”]
如果不是用户名:
引发序列化程序。ValidationError('用户名不能为空!')
自身温度代码=1
elif len(用户名)<6:
引发序列化程序。ValidationError('用户名必须至少创建6个字符!')
自身温度代码=2
返回值
上面我有一个序列化程序,通过它我可以获得登录的用户凭据。我想用'temp\u code'
设置唯一的代码值,我可以在我的LoginView中访问该值。在此基础上,我将在视图中执行一些操作
我正在尝试上面的代码和我在其他问题中的所有技巧,但不幸的是,它没有起作用
有谁能告诉我正确的方法吗
谢谢!提前您是否显式调用
validate_login()
,因为如果序列化程序中没有login
字段,它将不会被调用。您也不应该在保存对象之前引用self.data
。在DRF的未来版本中,这可能会触发异常。