django-rest-framework - 在可浏览的 API 中自动生成表单?

Posted

技术标签:

【中文标题】django-rest-framework - 在可浏览的 API 中自动生成表单?【英文标题】:django-rest-framework - autogenerate form in browsable API? 【发布时间】:2013-01-15 00:08:22 【问题描述】:

不确定我是否使用了正确的词汇。在 django-rest-framework 免费提供的可浏览 api 中,我想知道是否有一种方法可以自动生成类似于我们定义 ModelForms 的表单。在某些情况下,这将使我们能够更轻松地测试 API 的输入。 我目前正在使用 ModelSerializers 和通用视图 APIView 以防万一。

我已阅读文档(此时已阅读数次),但没有在任何地方看到它。

【问题讨论】:

我仍然无法得到确切的表格。这是我现在能看到的!enter image description here 【参考方案1】:

如果您使用通用的基于类的视图,您将免费获得它。尝试http://restframework.herokuapp.com 的实时教程,以用户之一的身份登录,这样您就可以创建一些 sn-ps。例如用户:'max',密码:'max'。

任何子类化GenericAPIView 并设置serializer_class 的视图都将获得该行为,因为 REST 框架可以确定表单的外观。

例如:

(注意屏幕截图底部的表单输入)

如果您只是在 APIView 工作,您将获得通用内容输入(例如 json),就像您包含屏幕截图一样,这也很有用,但不如表格。

【讨论】:

啊该死的。在这里阅读教程时感到困惑:django-rest-framework.org/tutorial/3-class-based-views.html 我只是在使用 APIView,而不是像在最底部那样实际使用标准通用视图。谢谢! 你可以在 APIView 上做同样的事情。只需设置serializer_class,它将用于可浏览api中的表单 @Christoffer 评论实际上是使用APIView 时的答案。【参考方案2】:

创建一个适合您想要的表单输入字段的序列化程序类,并像这样在您的 APIView 上设置它;

class MyView(APIView):
    serializer_class = MySerializer  # Used for the form in the browsable api

效果很好。

基于模型的序列化器类示例:

from rest_framework import serializers

class MySerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel

【讨论】:

【参考方案3】:
class MyApiView(APIView):
    """My Demo API View"""
    serializer_class = serializers.MySerializers

确保您使用的名称是“serializer_class”,而不是任何其他名称,例如 serializers_class。

使用确切的“serializer_class”将在可浏览 API 中自动生成表单

【讨论】:

以上是关于django-rest-framework - 在可浏览的 API 中自动生成表单?的主要内容,如果未能解决你的问题,请参考以下文章

断言错误:Django-rest-Framework

django-rest-framework 是不是提供管理站点来管理模型?

如何在 django-rest-framework 中对权限进行单元测试?

在 django-rest-framework 中插入 django-allauth 作为端点

django-rest-framework、多表模型继承、ModelSerializers 和嵌套序列化器

在 django-rest-framework 中,是不是可以同时使用 oauth 和 session 身份验证?