1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# -*- coding: utf-8 -*-
"""
@File    : serializers.py
@Time    : 2023/1/13 11:34
@Author  : geekbing
@LastEditTime : -
@LastEditors : -
@Description : 序列化&反序列化
"""
 
from rest_framework import serializers
from django.contrib.auth import get_user_model
 
from lunarlink.models import LoginLog
 
User = get_user_model()
 
 
class UserLoginSerializer(serializers.Serializer):
    """
    用户登录序列化
    """
 
    username = serializers.CharField(required=True)
    password = serializers.CharField(required=True)
 
 
class UserModelSerializer(serializers.ModelSerializer):
    """
    访问统计序列化
    """
 
    class Meta:
        model = User
        fields = [
            "id",
            "is_superuser",
            "username",
            "name",
            "is_staff",
            "is_active",
            "groups",
        ]
        depth = 1
 
 
class LoginLogSerializer(serializers.ModelSerializer):
    """
    登录日志权限-序列化器
    """
 
    class Meta:
        model = LoginLog
        fields = "__all__"
        read_only_fields = ["id"]
 
# 在 UserLoginSerializer 下方添加
class ChangePasswordSerializer(serializers.Serializer):
    """
    修改密码序列化
    """
    old_password = serializers.CharField(required=True, max_length=128)
    new_password = serializers.CharField(required=True, min_length=6, max_length=128)
    confirm_password = serializers.CharField(required=True, max_length=128)
 
    def validate(self, attrs):
        if attrs['new_password'] != attrs['confirm_password']:
            raise serializers.ValidationError("两次输入的新密码不一致")
        return attrs