Skip to main content
 首页 » 编程设计

python之如何使用 Django REST Framework (DRF) 3 创建 Django 用户

2025年05月04日14zlslch

我正在尝试使用 Django Rest Framework 3.1.1 在 POST 中创建用户。我需要使用内置方法来创建加密密码,所以我试图覆盖 ModelSerializer 上的保存方法,但我显然不太了解 Django/DRF 来执行此操作。有没有一种直接的方法可以做到这一点?

当我尝试下面的代码时,出现错误:

unbound method set_password() must be called with User instance as first argument (got unicode instance 

代替)

from django.contrib.auth.models import User 
 
from rest_framework import serializers 
 
class UserSerializer(serializers.ModelSerializer): 
    class Meta: 
        model = User 
 
    def save(self): 
        email = self.validated_data['email'] 
        username = self.validated_data['username'] 
        password = User.set_password(self.validated_data['password']) 

请您参考如下方法:

尝试做这样的事情:

class UserSerializer(serializers.ModelSerializer): 
    class Meta: 
        model = User 
        fields = ('email', 'username', 'password') 
        extra_kwargs = {'password': {'write_only': True}} 
 
    def create(self, validated_data): 
        user = User( 
            email=validated_data['email'] 
            username=validated_data['username'], 
        ) 
        user.set_password(validated_data['password']) 
        user.save() 
        return user