2017-03-03 41 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