Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 自定义验证功能不工作_Django_Django Rest Framework - Fatal编程技术网

Django 自定义验证功能不工作

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

my serializers.py:

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的未来版本中,这可能会触发异常。