我有一个使用 Django DRF 构建的 API。我正在使用基于函数的视图,我想知道是否可以为可浏览的 API 添加定义的表单(基于模型序列化器)?
由于没有人回答这个问题,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:
...