我将创建一个REST API来处理用户请求,其形式如下:
但现在我得到的是:
基本上,我正在寻找一种选项来传递分隔符参数到
注意:
我知道,如果我将查询模式从
localhost:8000/search/?categories=<category1>,<category2>&parts=<id1>,<id2>
在解析器中,逗号,
被认为是定界符。
我的视图处理请求并将查询参数传递给序列化程序,但我无法将原始字符串解析为字符串列表。
到目前为止,我的尝试:
class StringListField(serializers.ListField):
child = serializers.CharField()
class LookupPartsSerializer(serializers.Serializer):
categories = StringListField()
parts = StringListField()
class LookupParts(APIView):
def get(self, request, format=None):
serializer = LookupPartsSerializer(data=request.query_params)
serializer.is_valid()
return Response(serializer.validated_data)
My desired output is like:
{
"categories": [
"<category1>",
"<category2>"
],
"parts": [
"<id1>",
"<id2>"
]
}
但现在我得到的是:
{
"categories": [
"<category1>,<category2>"
],
"parts": [
"<id1>,<id2>"
]
}
基本上,我正在寻找一种选项来传递分隔符参数到
StringListField
或添加一些自定义解析方法。注意:
我知道,如果我将查询模式从
?categories=<category1>,<category2>...
更改为?categories=<category1>&categories=<category2>...
,那么我会得到所需的结果,但我想坚持我的原始方法。
True
,你可以试一下。顺便问一下,你会建议使用什么模式? - SzabolcsTrue
:) 是的,我考虑过那个,但希望有一个通用的最佳实践来解决这样一个常见的问题。 - Szabolcs