Django DRF - 是否可以使用基于函数的视图在可浏览 API 中拥有预定义的表单?

问题描述 投票:0回答:1

我有一个使用 Django DRF 构建的 API。我正在使用基于函数的视图,我想知道是否可以为可浏览的 API 添加定义的表单(基于模型序列化器)?

我想改变它(我通过基于函数的视图获得的可浏览 API):

对此(我通过基于类的视图得到了什么):

django django-rest-framework django-views
1个回答
0
投票

由于没有人回答这个问题,DRF 使用

get_serializer
serializer_class
api_view
装饰器将您的视图包装在一个名为
WrappedAPIView
的类中,如果您在函数上使用了任何装饰器(例如
renderer_classes
),则装饰器会将
WrappedAPIView
上的属性设置为您在装饰器中设置的属性。如果您想在不更改
api_view
装饰器本身的情况下复制此行为,您可以尝试如下所示。

警告!我没有为 DRF 做出贡献,所以我不知道

serializer
装饰器的省略是否是故意的,或者下面的内容是否过于黑客,但我认为它应该有效。

def serializer(serializer):
    def decorator(api_view):
        api_view.cls.serializer_class = serializer
        api_view.view_class.serializer_class = serializer
        return api_view

    return decorator


@serializer(YourSerializer)
@api_view(["POST"])
def your_view(request: Request) -> Response:
    ...
© www.soinside.com 2019 - 2024. All rights reserved.