【发布时间】:2020-07-18 18:40:37
【问题描述】:
我对 Django REST Framework 输出的序列化数据有疑问,因为密码字段没有经过哈希处理(尤其是那些直接从 DRF 创建的)。我使用 createsuperuser 命令创建的用户具有序列化密码散列(pbkdf2),这很好,但我使用 DRF 创建的用户不是。 我使用的序列化器是这样的(serializers.py):
from users.models import User
class UserSerializer(serializers.ModelSerializer):
password = serializers.CharField(style={'input_type': 'password'})
class Meta:
model = User
fields = '__all__'
模型类看起来像这样(models.py):
from django.contrib.auth.models import AbstractUser
# Create your models here.
class User(AbstractUser):
class Role:
ADMINISTRATOR = 'Administrator'
PHARMACIST = 'Pharmacist'
PATIENT = 'Patient'
choices = {
(ADMINISTRATOR, 'Administrator'),
(PHARMACIST, 'Pharmacist'),
(PATIENT, 'Patient'),
}
role = models.CharField(max_length=100, choices=Role.choices, default=Role.ADMINISTRATOR)
first_name = models.CharField(max_length=100, blank=False)
last_name = models.CharField(max_length=100, blank=False)
email = models.EmailField(max_length=100, unique=True)
birth_date = models.DateField(auto_now_add=False, blank=True, null=True)
address = models.CharField(max_length=255)
查询集看起来像这样(views.py):
from django.shortcuts import render
from users.models import User
from rest_framework import viewsets
from users.serializers import UserSerializer
# Create your views here.
class UserViewSet(viewsets.ModelViewSet):
serializer_class = UserSerializer
queryset = User.objects.all()
我期待您的帮助。
【问题讨论】:
-
你的模型中有密码字段吗?
-
它从 AbstractUser 类中获取密码字段。
标签: python django django-rest-framework