在Django Rest Framework ViewSets中添加表单
我创建了一些视图,它们直接从 viewsets.ViewSet
这个类继承,而不是从 ModelViewSet
继承。很多(但不是全部)这样的视图没有在类里明确声明序列化器,因为我不需要那样做。举个例子,有一个“验证邮箱”的视图,它只需要输入一个验证码,然后 .list()
方法会查找这个验证码并验证用户。这里不需要序列化器或模型,我使用 ViewSet
只是为了能在路由中正确注册这个视图。
不过,这些视图在可浏览的API页面底部缺少ModelViewSet页面通常会有的自动生成的表单,用于处理POST和PUT请求。
我需要做什么或者指定什么,才能让这些表单显示出来,并且包含我想要的字段,适用于这些 ViewSet
子类呢?
1 个回答
0
你需要为视图集准备一个序列化器。
BrowsableAPIRenderer
在它的 get_context
方法中返回:
'put_form': self.get_rendered_html_form(data, view, 'PUT', request),
'post_form': self.get_rendered_html_form(data, view, 'POST', request),
而 get_rendered_html_form
正在寻找为视图定义的序列化器。
这样做是有道理的,因为如果没有序列化器,你就无法处理通过 POST
或 PUT
发送的数据。