【发布时间】:2016-03-24 10:56:02
【问题描述】:
好的,我有一个 GenericAPIView,它应该在 Browsable API 中生成一个表单,因为它声明了一个 post 方法:
from rest_framework import status
from rest_framework.generics import GenericAPIView
from rest_framework.response import Response
from transacciones.serializers import BillSerializer
class ProcessBill(GenericAPIView):
serializer_class = BillSerializer
def post(self, request):
recieved_data = request.data
print(recieved_data)
return Response("Processed Bill", status=status.HTTP_200_OK)
但它不会生成表单。视图看起来像这样(它是西班牙语,我将代码翻译成英文,这样阅读起来更舒服):
我知道我得到了 405 Method not Allowed,因为我没有定义 get 方法,只定义了 post。
我正在使用 Django 1.8、Django REST Framework 3.3.1 和 python 3.4。我在这里迷路了。有任何想法吗?
编辑
另外,如果我使用 Postman(Chrome 插件),视图会正确响应。
【问题讨论】:
-
@Geotob 本题使用
GenericAPIView,旧题使用APIView。 TomChristie 对这个问题的回答中说明了差异:stackoverflow.com/questions/14616489/… -
无论如何我认为创建一个新问题可能是个好主意,也许这不是一个好主意。我可以删除其中一个。
-
对不起,我没有发现这个! :(
GenericAPIViews使用create(request, *args, **kwargs)方法,而不是post -
@Geotob 尝试了 create 方法,不起作用。无论如何,
GenericAPIView是从APIView扩展而来的,这就是文档所说的......所以它应该有一个post方法。
标签: django django-rest-framework