は、私がContactRequest
の本体と、サーバエンドポイントに要求を行います。DRFサーバー側のリクエストボディモデルフィールドにアクセスする方法は?アンドロイドクライアント側で
public class ContactRequest {
@SerializedName("senderId")
@Expose
private int senderId;
@SerializedName("receiverId")
@Expose
private int receiverId;
public ContactRequest(int senderId, int receiverId) {
this.senderId = senderId;
this.receiverId = receiverId;
}
}
私がリクエストボディとしてこのオブジェクトを渡し改造使用:サーバー上で
@POST("friendship/create-friend-request/")
Call<Void> sendRequest(@Body ContactRequest contactRequest);
を要求がこのエンドポイントaに行われたときしかし
class CreateFriendRequestView(views.APIView):
def post(self, request, *args, **kwargs):
sender = User.objects.get(pk=request.senderId)
receiver = User.objects.get(pk=request.receiverId)
Friend.objects.add_friend(sender, receiver)
return Response({'status': 'Request sent'}, status=201)
:側が、私はその後、CreateFriendRequestView
にこのエンドポイントをマップビューが呼び出されると、内部サーバーエラー、ステータスコード500が発生します。
AttributeError: 'Request' object has no attribute 'senderId'
どのように私は、Djangoの残りのフレームワーク、クライアント側のsenderId
とreceiverId
をフィールドへの参照を行うことができますか?
ありがとう、代わりに、次のようにしてアクセスできます:request.data ['senderId'] –
はい、正しいです。 'get'メソッドは、指定されたキーがdictに存在しない場合にデフォルト値を与えることができます。例えば: 'request.data.get( 'senderId'、1)' –