2017-09-01 17 views
0

隨着我請求只對「叢書中的」場「產品名稱」如何實現單場多個請求的值在Django

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

API代碼這個curl命令:

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" 

請建議這種類型的請求,什麼修飾的def Productfilter編碼做curl命令。

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) 

回答

0

第一件事情,如果你只是要求數據應該使用GET請求。

第二件事,我認爲這是ProductName=request['ProductName']一個錯字和你真的使用request.POST[xxx](應爲request.GET[xxx]實際比照上述第一點)

WRT /如何可以得到多個值同一個按鍵上Django的一面,你只需要使用​​,改變你的查詢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 

爲捲曲部分你必須檢查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 
+0

我明白你在說什麼......我試着去做......它的'dict'對象沒有屬性'GET' – vaashh

+0

然後你沒有發佈足夠的代碼(特別是你的'ProductFilter'屬於什麼類,正是他被通過爲「請求」)。我當然假設了一個Django HTTPRequest實例,它似乎是一個'dict' ...這可能是個問題,因爲'dict'也沒有'getlist'方法。 –

+0

我編輯了views.py ..那麼我怎樣才能實現相同的字典?.. – vaashh

0

試試這個:

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" 

希望它幫助!

相關問題