【问题标题】:How to generate form in browsable API without using a serializer_class?如何在不使用 serializer_class 的情况下在可浏览的 API 中生成表单?
【发布时间】:2013-12-23 19:48:26
【问题描述】:

假设我有一个 API 需要几个 GET 参数:'foo' 和 'bar'。我还没有定义serializer_class,因为它不依赖于任何特定的模型:

from rest_framework.generics import GenericAPIView
from rest_framework.response import Response


class myAPI(GenericAPIView):    

    def get(self, request, format=None):
        foo = request.GET.get('foo')
        bar = request.GET.get('bar')

        # do something with foo & bar

        return Response({'fooplusbar': _something(foo,bar)})

有没有办法告诉 djangorestframework 在这种情况下构建表单?

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    Django REST 框架仅支持开箱即用的 POST、PUT 和 PATCH 请求表单。

    在这些情况下,表单是从序列化程序生成的。定义一个不返回 Model 对象的序列化程序没有错,也没有将序列化程序仅用于表单显示,并编写例如一个不使用它的自定义 POST 处理程序。但要让 Django REST Framework 显示表单,您必须定义一个序列化程序。

    添加对正确 GET 表单的支持是完全可能的,但您需要扩展 rest_framework.renderers.BrowsableAPIRenderer.render 以将新表单添加到上下文中,并在 rest_framework/api.html 中编写您自己的模板。

    【讨论】:

    • 您好 Nicolas,感谢您的回答。我已经研究了一段时间,也联系了 django-rest-framework 团队,似乎覆盖可浏览的 API 模板以传递自定义表单是正确的方法。谢谢!
    猜你喜欢
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 2020-10-08
    相关资源
    最近更新 更多