Как я могу использовать несколько request.query_params в условиях с помощью Django

Здесь я использую request.query_params для получения параметра в API через URL. через URL, но в настоящее время я пытаюсь использовать несколько параметров в соответствии с условиями, например: здесь в одном условии я беру поле, страницу, строки. условия, например: здесь в одном условии я беру поле, страницу, строки и в другом условии я беру страницу, строки и так далее, но это учитывается только первое условие и игнорируются остальные условия.

class SampleView(APIView):
def get(self, request):
    if request.query_params['page'] and request.query_params['rows']:  # Pagination
        page = int(request.query_params['page'])
        rows = int(request.query_params['rows'])
        val1 = rows*(page-1)
        val2 = (val1+rows)
        qry = DeviceControlPolicy.objects.all()[val1:val2]
        qry_length = DeviceControlPolicy.objects.count()
        serializer = DeviceControlPolicySerializer(qry, many=True).data
        data = {
            'count': qry_length,
            'data': serializer
        }
        return Response(data)

    elif request.query_params['field'] and request.query_params['page'] and request.query_params['rows']:
        page = int(request.query_params['page'])
        rows = int(request.query_params['rows'])
        val1 = rows * (page - 1)
        val2 = (val1 + rows)
        field = request.query_params['field']
        qry = DeviceControlPolicy.objects.all().order_by(field).values()[val1:val2]
        qry_length = DeviceControlPolicy.objects.count()
        print(qry_length)
        serializer = DeviceControlPolicySerializer(qry, many=True).data
        data = {
            'count': qry_length,
            'data': serializer
        }
        return Response(data)

Пожалуйста, помогите мне, как я могу сделать это и могу ли я использовать несколько условий, используя различное количество параметров.

В каждом условии необходимо проверить значения всех параметров, даже если их значение должно быть False.

class SampleView(APIView):
   def get(self, request):
      if request.query_params.get('page') and request.query_params.get('rows') and not request.query_params.get('field'):
         page = int(request.query_params['page'])
         rows = int(request.query_params['rows'])
         val1 = rows*(page-1)
         val2 = (val1+rows)
         qry = DeviceControlPolicy.objects.all()[val1:val2]
         qry_length = DeviceControlPolicy.objects.count()
         serializer = DeviceControlPolicySerializer(qry, many=True).data
         data = {
            'count': qry_length,
            'data': serializer
         }
         return Response(data)
      elif request.query_params.get('field') and request.query_params.get('page') and request.query_params.get('rows'):
         page = int(request.query_params['page'])
         rows = int(request.query_params['rows'])
         val1 = rows * (page - 1)
         val2 = (val1 + rows)
         field = request.query_params['field']
         qry = DeviceControlPolicy.objects.all().order_by(field).values()[val1:val2]
         qry_length = DeviceControlPolicy.objects.count()
         print(qry_length)
         serializer = DeviceControlPolicySerializer(qry, many=True).data
         data = {
            'count': qry_length,
            'data': serializer
         }
         return Response(data)

Метод get допускает None значения.

Я пробовал это, что насчет этого, это тоже не работает:

def get(self, request):
    if request.query_params['page'] and request.query_params['rows']:
        # field=request.query_params['field']?request.query_params['field']:"id"
        page = int(request.query_params['page'])
        rows = int(request.query_params['rows'])
        val1 = rows * (page - 1)
        val2 = (val1 + rows)

        field = "id"
        if request.query_params['field']:
            field = request.query_params['field']

        if request.query_params['order'] is 1:
            qry = DeviceControlPolicy.objects.all().order_by(field).values()[val1:val2]
        else:
            qry = DeviceControlPolicy.objects.all().order_by("-" + field).values()[val1:val2]

        qry_length = DeviceControlPolicy.objects.count()
        print(qry_length)
        serializer = DeviceControlPolicySerializer(qry, many=True).data
        data = {
            'count': qry_length,
            'data': serializer
        }
        return Response(data)
Вернуться на верх