如何仅从URL字符串创建请求并在DRF中提供查询参数

问题描述 投票:0回答:1

我将URL存储在数据库中,我希望某些请求拉出这些URL蜇,然后请求数据。我可以发出请求,但无法弄清楚如何向请求添加查询参数。

from rest_framework.test import APIRequestFactory

factory = APIRequestFactory()
url = '/some/nice/url/'
func, args, kwargs = resolve(url)
view = func.cls.as_view({'get': 'list'})
request = factory.get(url)
request.user = get_current_user()
response = view(request, **{'item': 1})  # <- this query param has no effect
response.render()

json.loads(response.content.decode("utf-8"))['results']

这确实会返回响应,但我提供的查询参数无效。

此外,this ticket提供了一些线索,但没有解决方案。

django-rest-framework
1个回答
0
投票

我想通了。查询集和序列化程序都是可访问的,因此所需要的只是将它们组合起来:

func, args, kwargs = resolve(url)
queryset = func.cls.queryset.filter(**filter_dict)
serializer = func.cls.serializer_class

return serializer(queryset, many=True).data
© www.soinside.com 2019 - 2024. All rights reserved.