在Django Rest Framework ViewSets中添加表单

3 投票
1 回答
639 浏览
提问于 2025-04-18 12:18

我创建了一些视图,它们直接从 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 正在寻找为视图定义的序列化器。

这样做是有道理的,因为如果没有序列化器,你就无法处理通过 POSTPUT 发送的数据。

撰写回答