Django 如何进行正确的身份验证?

Django 如何进行正确的身份验证?,django,authentication,Django,Authentication,我正在triyng与Django进行身份验证,更改模型添加用户名\u字段,并创建一个视图进行登录,但仍然无法工作。我使用电子邮件作为用户名 Django==2.2.8 django-cors-headers==3.2.0 django-filter==2.2.0 djangorestframework==3.10.3 我的代码: 用户模型: 类用户(AbstractBaseUser, UGCModel): 类元: 应用程序标签='用户' first_name=models.CharField(

我正在triyng与Django进行身份验证,更改模型添加
用户名\u字段
,并创建一个视图进行登录,但仍然无法工作。我使用电子邮件作为
用户名

Django==2.2.8
django-cors-headers==3.2.0
django-filter==2.2.0
djangorestframework==3.10.3
我的代码:

用户模型:

类用户(AbstractBaseUser,
UGCModel):
类元:
应用程序标签='用户'
first_name=models.CharField(最大长度=100)
last_name=models.CharField(最大长度=100)
email=models.EmailField(最大长度=254,唯一性=True)
username=models.CharField(最大长度=150,唯一性=True)
email_verified=models.BooleanField(默认值=False)
genre=models.CharField(max_length=1,choices=GENRES,blank=True)
出生日期=模型。日期字段(空白=假,空=真)
cep=models.CharField(验证器=[v.validate\u cep],最大长度=100)
用户名\字段='USERNAME'
定义(自我):
返回“(用户)%s”%self.email
我的看法是:

    def post(self, request, format=None):
        errors = None
        serializer = self.get_serializer(data=request.data)

        if not serializer.is_valid():
            errors = serializer.errors
        else:
            username = request.data['username']
            password = request.data['password']
            user = authenticate(self, username=username, password=password)
            if user:
                pass
            else:
                errors = 'check username or password'

        if not errors:
            login(request, user)
            user.relationships.flush_cache()
            data = {'detail': 'authenticated',
                    'super' : user.super_user,
                    'key': Token.objects.get(user=user).key}

            return Response(data, status=status.HTTP_200_OK)

        detail = {'detail': errors}
        return Response(detail, status=status.HTTP_400_BAD_REQUEST)
我将其添加到设置中:

AUTH_USER_MODEL = "user.User"
用户已成功创建:

uid: "_e8f35f44afa8"
username: "vini@gmail.com"
password: "123123"
first_name: "vini"
cep: "05407-002"
last_name: "morais"
email: "vini@gmail.com"
date_of_birth: null
但是身份验证总是失败

vini@gmail.com 123123
check username or password
Bad Request: /login
WARNING:django.request:Bad Request: /login
[20/Dec/2019 23:51:03] "POST /login HTTP/1.1" 400 39

身份验证将:
身份验证(self,username=username,password=password)
,但它不起作用。我忘记了要设置的内容?

是否同时使用
SessionAuthentication
TokenAuthentication
?因为
SessionAuthentication
不需要令牌,
TokenAuthentication
不需要
authentication
用户。因此,如果我只使用
django.contrib.auth
如何生成令牌?