【发布时间】:2020-04-17 20:08:21
【问题描述】:
我想使用多个查询参数过滤视图中的查询集,但“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)
...
当我使用 curl 发出这个 GET 请求时:
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 中只显示第一个查询参数?
【问题讨论】:
-
你能打印
self.request.GET吗?
标签: python django api django-rest-framework