gpt4 book ai didi

Django Rest Swagger 与 APIView

转载 作者:行者123 更新时间:2023-12-03 01:06:09 27 4
gpt4 key购买 nike

我正在尝试将 Swagger 集成到我的 Django Rest Framework API 中。我安装了相关的软件包并按照 Github 页面的快速入门指南进行操作。不过我遇到了一些问题。 Swagger 仅显示 View 的文档注释。

基本上我有一个APIView来解释给定的url(因为它可以有n个“ token ”,例如“/first/second/”或“/a/b/c/d/e/f/g” ) 进行数据库查询并根据请求类型和 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.")

无论它的值(value)如何,API 代表了一个集合和资源结构,非常类似于具有 n 深路径的文件系统。

最佳答案

我找到了一种使用名为序列化器的标签来做到这一点的方法。一个例子是serializer: UserDocSerializer。如果你是这样的:

"""
Your View
---
... All about parameters and types ...
serializer: UserDocSerializer
...

我遇到的问题是它总是试图让我从 View 导入序列化器,所以我必须在views.py中声明它,如下所示:

class UserDocSerializer(serializers.ModelSerializer):
class Meta:
model = UserProfile
fields = ('username', 'image')

这样你就可以得到你想要显示的字段

关于Django Rest Swagger 与 APIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24905189/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com