gpt4 book ai didi

python - 为 get 和 post 请求定义不同的模式 - AutoSchema Django Rest Framework

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

我正在尝试在 Django REST framework 中为我的 REST API 定义 AutoSchema(将在 django rest framework swagger 中显示)。有一个扩展 APIView 的类。

该类同时具有“get”和“post”方法。喜欢:

class Profile(APIView):
permission_classes = (permissions.AllowAny,)
schema = AutoSchema(
manual_fields=[
coreapi.Field("username",
required=True,
location='query',
description='Username of the user'),

]
)
def get(self, request):
return
schema = AutoSchema(
manual_fields=[
coreapi.Field("username",
required=True,
location='form',
description='Username of the user '),
coreapi.Field("bio",
required=True,
location='form',
description='Bio of the user'),

]
)
def post(self, request):
return

问题是我想要获取和发布请求的不同架构。如何使用 AutoSchema 实现这一点?

最佳答案

您可以 创建自定义架构 并覆盖 get_manual_fields提供自定义的方法 manual_fields基于方法的列表:

class CustomProfileSchema(AutoSchema):
manual_fields = [] # common fields

def get_manual_fields(self, path, method):
custom_fields = []
if method.lower() == "get":
custom_fields = [
coreapi.Field(
"username",
required=True,
location='form',
description='Username of the user '
),
coreapi.Field(
"bio",
required=True,
location='form',
description='Bio of the user'
),
]
if method.lower() == "post":
custom_fields = [
coreapi.Field(
"username",
required=True,
location='query',
description='Username of the user'
),
]
return self._manual_fields + custom_fields


class Profile(APIView):
schema = CustomProfileSchema()
...

关于python - 为 get 和 post 请求定义不同的模式 - AutoSchema Django Rest Framework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59468988/

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