2017-12-26 9 views
0

私はこのカスタムレジスタapiをユーザに登録していますが、ユーザが正常に登録すると、このメッセージが表示されます。しかし、私は別の方法を試みたが、代わりにエラーを取得します。Django rest frameworkカスタム返品応答

serializer.py

class UserCreate2Serializer(ModelSerializer): 
    email = EmailField(label='Email Address') 
    valid_time_formats = ['%H:%M', '%I:%M%p', '%I:%M %p'] 
    birthTime = serializers.TimeField(format='%I:%M %p', input_formats=valid_time_formats, allow_null=True, required=False) 

    class Meta: 
     model = MyUser 
     fields = ['username', 'password', 'email', 'first_name', 'last_name', 'gender', 'nric', 'birthday', 'birthTime'] 
     extra_kwargs = {"password": {"write_only": True}} 

    def validate(self, data): # to validate if the user have been used 
     email = data['email'] 
     user_queryset = MyUser.objects.filter(email=email) 
     if user_queryset.exists(): 
      raise ValidationError("This user has already registered.") 
     return data 

    def create(self, validated_data): 
     username = validated_data['username'] 
     password = validated_data['password'] 
     email = validated_data['email'] 
     first_name = validated_data['first_name'] 
     last_name = validated_data['last_name'] 
     gender = validated_data['gender'] 
     nric = validated_data['nric'] 
     birthday = validated_data['birthday'] 
     birthTime = validated_data['birthTime'] 

     user_obj = MyUser(
      username = username, 
      email = email, 
      first_name = first_name, 
      last_name = last_name, 
      gender = gender, 
      nric = nric, 
      birthday = birthday, 
      birthTime = birthTime, 

     ) 
     user_obj.set_password(password) 
     user_obj.save() 
     return validated 

views.py

class CreateUser2View(CreateAPIView): 
    permission_classes = [AllowAny] 
    serializer_class = UserCreate2Serializer 
    queryset = MyUser.objects.all() 

私は

user_obj.set_password(password) 
    user_obj.save() 
    content = {'Message' : 'You have successfully register an account'} 
    return content 

シリアライザにこれを変更しようとしたが、代わりにエラーが発生しました。私は私が唯一それがviews.py 上で行う必要がある知っているようにカスタム応答を行う方法がわからないですが、私は、ビュー

class CreateUser2View(CreateAPIView): 
    permission_classes = [AllowAny] 
    serializer_class = UserCreate2Serializer 
    queryset = MyUser.objects.all() 

     def post(self, request): 
     content = {'Message': 'You have successfully register'} 
     return Response(content, status=status.HTTP_200_OK) 

でこれを行うかどうかは検証が間違っている場合でも、これを表示します。私はDRF

答えて

2
class CreateUser2View(CreateAPIView): 
    permission_classes = [AllowAny] 
    serializer_class = UserCreate2Serializer 
    queryset = MyUser.objects.all() 

    def create(self, request, *args, **kwargs): 
     serializer = self.get_serializer(data=request.data) 
     serializer.is_valid(raise_exception=True) 
     self.perform_create(serializer) 
     headers = self.get_success_headers(serializer.data) 
     return Response({'Message': 'You have successfully register'}, status=status.HTTP_201_CREATED, headers=headers) 
+0

での経験不足はそれが仕事だ場合、答えを受け入れるように良くなるだ今完璧 –

+0

に動作します、ありがとうまだだとして私を助けてください:) – Ykh

関連する問題