我正在尝试将Swagger集成到我的Django Rest Framework API中 . 我安装了相关的软件包,并按照Github页面的快速入门指南进行操作 . 我有一些问题 . Swagger仅显示视图的doc-comment .
基本上我有一个APIView解释给定的URL(因为它可以有n量的“令牌”,例如“/ first / second /”或“/ a / b / c / d / e / f / g”)使aa db-query并选择正确的序列化程序以根据请求类型和URL末尾的资源返回数据 .
如果我已正确理解Swagger的工作原理,它会使用序列化器来获取示例json输入和其他相关数据以显示在ui中 . 有没有办法明确告诉它应该使用的序列化器?
最后,这是我的APIView的GET代码示例,用于显示序列化程序的用法 . 如您所见,使用了两种不同的序列化器:
isValid = self.isValidUrl(request.path)
if not isValid:
return Response("Error: The url is empty.")
url = self.trimTheUrl(request.path)
print url
try:
target = models.APINode.objects.get(uniquePath=url)
perm = IsOwner()
perm.has_object_permission(request, self, target)
#check is the APINode collection or item:
if target.objectType == "item":
#return JSON data of the materialItem:
serializer = ProductSerializer(target.materialItem)
return Response(serializer.data)
else:
#find objects in this collection
children = models.APINode.objects.filter(parentPath=target.uniquePath)
serializer = APINodeSerializer(children, many=True)
return Response(serializer.data)
except models.APINode.DoesNotExist:
return Response("404: No such collection or materialItem.")
无论它值多少,API都代表了一个集合和资源结构,就像一个具有n深路径的文件系统 .
1 回答
我找到了一种使用名为serializer的标签来实现此目的的方法 . 一个例子是
serializer: UserDocSerializer
. 你是这样的:我得到的问题是它总是试图让我从视图中导入序列化器,所以我必须在views.py中声明这个:
有了它,您只需获取要显示的字段