Django REST Framework - в request.get_params отображается только первый параметр запроса - PullRequest
0 голосов
/ 17 апреля 2020

Я хотел бы отфильтровать набор запросов в представлении, используя несколько параметров запроса, но «request.query_params» может получить только первый параметр запроса в моей строке запроса.

Вот мой URLConf:

urlpatterns = [
   ...
   re_path(r'^descsearch/$', views.DescriptionSearchView.as_view(), name='descsearch'),
]

Вот верхняя часть моего представления, где я пытаюсь получить два параметра запроса из строки запроса («description» и «descSearchMethod»):

class DescriptionSearchView(generics.ListAPIView):
serializer_class = DrawingSerializer

def get_queryset(self):
    print("request.query_params: " + str(self.request.query_params))
    description = self.request.query_params.get('description')
    print("description: " + description)
    descSearchMethod = self.request.query_params.get('descSearchMethod')
    print("descSearchMethod: " + descSearchMethod)
    ...

Когда я выполните этот запрос GET, используя curl:

curl -X GET http://127.0.0.1:8000/api/descsearch/?description=O-RING&descSearchMethod=and

Операторы печати в консоли Django показывают, что только первый параметр запроса "description" находится в QueryDict.

request.query_params: <QueryDict: {'description': ['O-RING']}>
description: O-RING
Internal Server Error: /api/descsearch/
...

Если я измените порядок так, чтобы «descSearchMethod» был первым параметром запроса, только он показывает.

Почему в QueryDict отображается только первый параметр запроса?

1 Ответ

0 голосов
/ 18 апреля 2020

Я понял это! Мне просто нужно было добавить кавычки вокруг URL в моей команде curl, например:

curl -X GET 'http://127.0.0.1:8000/api/descsearch/?description=O-RING&descSearchMethod=and'

Я ввожу команду curl в Git Bash для Windows.

...