0

シリアライザからカスタム応答をアプリケーションのフロントエンドに送信する必要があります。私は残りのフレームワークの応答チュートリアルを試みたが、それは動作しません。私のコードは次のとおりです。シリアライザからdjango rest frameworkのカスタムエラー応答を送信しますか?

class UserSerializer(serializers.ModelSerializer): 
"""Serializer to serialize user model object""" 

    class Meta: 
     model = User 
     fields = ('id', 'username', 'password', 'first_name', 'last_name') 
     extra_kwargs = {'password': {'write_only': True}} 

    def create(self, validated_data): 
     """create a new user""" 

     firstname = self.initial_data['first_name'] 
     lastname = self.initial_data['last_name'] 
     fullname = str(firstname) +" "+ str(lastname) 
     email = self.initial_data['username'].lower() 

     try: 
      customer = User.create(
       name=fullname, 
       email=email) 

     except Error as e: 
      error = {'message': e._message or 'Unknown error'} 
      return Response(error,status=status.HTTP_400_BAD_REQUEST) 

答えて

3

serializers.py

class UserSerializer(serializers.ModelSerializer): 
"""Serializer to serialize user model object""" 

    class Meta: 
     model = User 
     fields = ('id', 'username', 'password', 'first_name', 'last_name') 
     extra_kwargs = {'password': {'write_only': True}} 

    def create(self, validated_data): 
     """create a new user""" 

     firstname = validated_data['first_name'] 
     lastname = validated_data['last_name'] 
     fullname = str(firstname) +" "+ str(lastname) 
     email = validated_data['username'].lower() 

     try: 
      customer = User.objects.create(
       name=fullname, 
       email=email) 
      return customer 

     except Exception as e: 
      error = {'message': ",".join(e.args) if len(e.args) > 0 else 'Unknown Error'} 
      raise serializers.ValidationError(error) 
+0

* Thx多くの私はこの答えを私の問題を解決しました:)* –

+0

ありがとう。 @origamic –

0

ですから、このビューからユーザー(JSONレスポンスの形状)の表現を変更したいです。

class UserSerializer(serializers.ModelSerializer): 
    """Serializer to serialize user model object""" 
    class Meta: 
     model = User 
     fields = ('id', 'username', 'password', 'first_name', 'last_name',) 
     write_only_fields = ('id', 'password',) 

    def to_representation(self, obj): 
     return { 
      'firstname': obj.first_name, 
      'lastname': obj.last_name, 
      'fullname': obj.first_name+' '+obj.last_name, 
      'email': obj.username.lower() 
     } 

これはいつでもリクエストは、ユーザがしかJSONでそれら4つのフィールドが表示されます。このシリアライザを使用している作られていることを意味する必要があり、例えば:あなたはシリアライザで.to_representation(self, obj)方法を変更する必要がこれを行うには

{ 
    "firstname":"Salman", 
    "lastname": "Ahmed", 
    "fullname": "Salman Ahmed", 
    "email": "[email protected]" 
} 

詳細はis hidden in their docs hereです。返信@Splatmistroため

+0

感謝。私はちょうどカスタムレスポンスとして私のエラーを表示します。私はユーザーの作成中にエラーが表示されたら、私はそのエラーを表示します。 –

+0

オハイオ州あなたの問題を誤解しました! – Splatmistro

関連する問題