Django REST框架-如何创建UserSerializer对象但不返回密码?

Django REST框架-如何创建UserSerializer对象但不返回密码?,django,serialization,django-models,django-rest-framework,user-registration,Django,Serialization,Django Models,Django Rest Framework,User Registration,我使用的是位于中的内置用户模型 django.contrib.auth.models 这是我的serialiers.py文件: from rest_framework import serializers from django.contrib.auth.models import User class UserSerializer(serializers.ModelSerializer): class Meta: model = User fie

我使用的是位于中的内置用户模型

django.contrib.auth.models
这是我的serialiers.py文件:

from rest_framework import serializers

from django.contrib.auth.models import User

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('username', )
现在,我想要的是,当我像这样序列化用户对象时:

user = User.objects.get(pk=1)
serialzer=UserSerializer(user)
return Response(serializer.data)
我只想将“username”作为JSON对象返回前端(我不想返回密码)。这很好,但当我尝试使用此视图创建用户对象时:

@api_view(['POST'])
def users(request):
    """
    Create a new user.
    """
    if request.method == 'POST':
        serializer = UserSerializer(data=request.DATA)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        else:
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
用户对象可以在用户不输入密码的情况下创建(我尝试过这样做)

curl -X POST localhost:8000/user -d "username=testUser"
# the above URL (localhost:8000/user) calls the "users" view

并且它成功地创建了一个仅使用给定用户名的用户)。如何使其在创建用户时,仅在提供有效用户名和密码时才能成功创建用户(因为位于django.contrib.auth.models中的“用户”模型需要有效用户名和密码)?

从返回的成功响应中弹出它

serializer.data.pop('password', None)

我忘记了数据是在响应之前还是之后序列化的,如果它是在响应之前序列化的,那么请确保使用json库进行转换、删除密码密钥、重新序列化,然后发送。

当我使用这行代码时,它首先给我一个错误,说pop只接受1个参数。我删除了“None”并尝试了“serializer.data.pop('password')”,现在它给了我一个类型错误,说“ExceptionValue:object不能被解释为整数”。忽略这一事实,如果有人忘记在数据传回之前将其弹出,它仍然打开了显示哈希的大门。您应该使用一个
write_only
字段,正如我在中所解释的。Nice不知道密码上有这个选项,如果您将数据转储到python然后重新序列化,我的解决方案确实有效,但这并不意味着良好的实践。