2017-03-03 45 views
0

create user django post request不能在Django

我在Django新DRF和我试图通过创建POST请求的新用户通过创建POST请求的用户。我发送用户名和密码参数,但django不会识别POST请求中的参数。

我的串行:

class UserSerializer(serializers.ModelSerializer): 
    password = serializers.CharField(write_only=True) 

    def create(self, validated_data): 
     user=get_user_model().objects.create(
     username = validated_data['username'] 
    ) 

     user.set_password(validated_data['password']) 
     user.save() 
     return user 

    class Meta: 
     model = get_user_model() 
     fields = ('username', 'password') 

我的观点类:

class CreateUserView(CreateAPIView): 
    model = get_user_model() 
    permission_classes = (AllowAny,) 
    serializer_class = UserSerializer 

我曾尝试使用serializers.ModelSerializer和serializer.Serializers,但没有成功。

+2

您要添加的参数查询字符串,所以他们应该从'request.GET'访问。相反,请将它们作为json包含在request body中,这样它们就包含在'validated_data'中。 – fips

+0

你的屏幕截图似乎是可疑的,因为它看起来不是发布数据,而是将它们作为URL参数传递。打开浏览器的开发工具并查看请求发布的数据,以确保数据确实发布在HTTP正文中,而不是发布到网址中。 – Linovia

回答

0
class UserSerializer(serializers.ModelSerializer): 

    def create(self, validated_data): 
     user = UserModel.objects.create_user(**validated_data) 

     return user 


    class Meta: 
     model = YOUR_MODEL 
     fields = ('username', 'password',) 



class CreateUserView(CreateAPIView): 
    model = YOUR_MODEL.objects.all() 
    permission_classes = (AllowAny,) 
    serializer_class = UserSerializer 

您可以按此查看并检查您的错误。

view.py

class CreateUser(APIView): 
    permission_classes = (AllowAny,) 

    def post(self, request): 
     post_data = request.data 

     print post_data # See what is your post DATA 


     serializer = UserSerializer(data=post_data) 

     if serializer.is_valid(raise_exception=True): 
      serializer.save() 
      return Response(data={'user':serializer.data}) 
     return Response(data={'user':serializer.errors}) 
+0

感谢您的询问。但我得到了同样的错误:“用户名”:“这个字段是必须的。”] :( –

+0

好吧,那么你必须在你的JSON后提供的用户名。 – marin