【发布时间】:2015-05-04 17:49:40
【问题描述】:
我正在使用位于
中的内置用户模型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)
我只想将“用户名”作为 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 中的“用户”模型需要有效的用户名和密码)?
【问题讨论】:
标签: django serialization django-models django-rest-framework user-registration