簡體   English   中英

如何在Django中為單個字段實現多個請求值

[英]how to implement multiple request values for single field in django

使用此curl命令,我僅要求字段“ ProductName”的“ Books”

curl -X POST http://localhost:8000/Productfilter/ -d '{"ProductName":"Books"}' -H "Content-Type:application/json"

api代碼:

 def Productfilter(self, request, format=None)
   queryset = Model.objects.filter(ProductName=request['ProductName'])
   ser = ModelSerializer(queryset, many=True)
      for item in ser.data:
         sendData.append({"ProductUrl": item['ProductUrl']}]   
   return sendData

我想為同一字段實現多個請求值。 就像我想要這樣的東西--->

curl -X POST http://localhost:8000/Productfilter/ -d '{"ProductName":"Books","Pencil","Copy"}' -H "Content-Type:application/json"

請為這種類型的請求建議curl命令,以及在def Productfilter編碼中要進行哪些修改。

views.py

class Productfilter(APIView):
    def post(self, request, format=None):

        request.data['PubIp'] = getUserIP(request)
        returnData = ApiFiltReq.Productfilter(self, request.data, format=None)
        if returnData == "RECORD_NOT_FOUND":  # bad request
            return Response(ErrorCodes.ERROR_CODE_LIST[returnData], status=status.HTTP_400_BAD_REQUEST)
        elif returnData == "DJANGO_ENTRY_FAILED":
            return Response(ErrorCodes.ERROR_CODE_LIST[returnData], status=status.HTTP_400_BAD_REQUEST)
        else:
            return Response(returnData, status=status.HTTP_202_ACCEPTED)

首先,如果您只要求數據,則應使用GET請求。

第二件事,我假設這個ProductName=request['ProductName']是一個錯字,而您實際上使用的是request.POST[xxx] (應該是request.GET[xxx]實際上是上面的第一點)

wrt /如何在Django端為同一鍵獲取多個值,只需使用request.GET.getlist(xxx)並將查詢更改為Model.objects.filter(ProductName__in=yyy)

def Productfilter(self, request, format=None)
    names = request.GET.getlist('ProductName')
    queryset = Model.objects.filter(ProductName__in=names)
    # etc

對於cURL部分,您必須檢查FineManual,但是IIRC應該可以工作:

curl -G http://localhost:8000/Productfilter/ --d ProductName=Books -d ProductName=Pencil -d ProductName=Copy

或只是在您的網址中傳遞一個簡單的查詢字符串:

curl -G http://localhost:8000/Productfilter/?ProductName=Books&ProductName=Pencil&ProductName=Copy

嘗試這個:

def Productfilter(self, request, format=None)
   queryset = Model.objects.filter(ProductName=request.data['ProductName'], Pencil=request.data['Pencil'])
   ser = ModelSerializer(queryset, many=True)
      for item in ser.data:
         sendData.append({"ProductUrl": item['ProductUrl']}]   
   return sendData 

curl命令將如下所示:

curl -X POST \
http://localhost:8000/Productfilter/ \
-d ProductName=Books
-d Pencil=Copy
-H "Content-Type:application/json"

希望能幫助到你!

暫無
暫無

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

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