让我们假设我有一个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在这种情况下构建表单?
答案 0 :(得分:2)
Django REST Framework仅支持POST,PUT和PATCH请求的开箱即用形式。
在这些情况下,表单是从序列化程序生成的。定义不返回Model对象的序列化器,也没有使用序列化器仅用于表单显示,并且例如写入,没有任何问题。一个不使用它的自定义POST处理程序。但是要让Django REST Framework显示一个表单,你必须定义一个序列化器。
很有可能添加对正确的GET表单的支持,但您需要扩展rest_framework.renderers.BrowsableAPIRenderer.render
以将新表单添加到上下文中,并在rest_framework/api.html
中编写自己的模板。 / p>