簡體   English   中英

如何訪問DRF服務器端的請求主體模型字段?

[英]How to access request body model fields on DRF server side?

在android客戶端,我向帶有ContactRequest主體的服務器端點發出請求:

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);

在服務器端,然后將此端點​​映射到CreateFriendRequestView

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)

但是,當對此端點發出請求並調用該視圖時,發生內部服務器錯誤,狀態碼為500。

AttributeError:“請求”對象沒有屬性“ senderId”

如何在Django senderId Framework客戶端上引用字段senderIdreceiverId

請求數據在請求對象的data字段中。

結帳http://www.django-rest-framework.org/api-guide/requests/#data

您必須使用:

sender = User.objects.get(pk=request.data.get('senderId'))

request.data是一個python字典。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM