django rest : @api_view and @classmethod error



我迫切需要@classmethod

我使用这个代码:

from rest_framework.response import Response
class MyClass():
@classmethod
@api_view(['GET', 'POST', 'PUT', 'DELETE'])
def CRUD(cls, request, id=0):
#.....
return Response({})
urlpatterns = [
re_path(r'^user/(?:(?P<id>[1-9]+)/)?$', UserView.CRUD)
]

获取错误:The 'request' argument must be an instance of 'django.http.HttpRequest', not 'builtins.type'.

请帮忙;感谢

就像@404pio说的那样。可以使用基于类的视图,也可以使用基于函数的视图。你不能把它们混在一起。

基于类的视图

from rest_framework.response import Response
from rest_framework.views import APIView
class MyClass(APIView):
def get(self, request, id):
# do stuff
return Response(...)
def post(self, request, id):
# do stuff
return Response(...)
.
.
.
urlpatterns = [
re_path(r'^user/(?:(?P<id>[1-9]+)/)?$', MyClass.as_view())
]

基于函数的视图

@api_view(['GET', 'POST'...])
def my_fbv(request, id):
if request.method == 'GET':
# do stuff
elif request.method == 'POST':
# do stuff
.
.
.
urlpatterns = [
re_path(r'^user/(?:(?P<id>[1-9]+)/)?$', my_module.my_fbv)
]

最新更新