如何在不使用serializer_class的情况下在可浏览的API中生成表单?

时间:2013-12-23 19:48:26

标签: django django-rest-framework

让我们假设我有一个API需要一对GET args:'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在这种情况下构建表单?

1 个答案:

答案 0 :(得分:2)

Django REST Framework仅支持POST,PUT和PATCH请求的开箱即用形式。

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

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