我将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提供了一些线索,但没有解决方案。
我想通了。查询集和序列化程序都是可访问的,因此所需要的只是将它们组合起来:
func, args, kwargs = resolve(url)
queryset = func.cls.queryset.filter(**filter_dict)
serializer = func.cls.serializer_class
return serializer(queryset, many=True).data