【发布时间】:2014-05-21 17:10:46
【问题描述】:
我之前对我的项目有这样的看法:
from rest_framework import status
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.parsers import JSONParser
from rest_framework.permissions import IsAuthenticated
from rest_api.my_app.serializer import MySerializer
from my_project.models import Bag
class MyView(APIView):
parser_classes = (JSONParser,)
queryset = Bag.objects.all()
permission_classes = (IsAuthenticated,)
@staticmethod
def post(self, request, format=None):
serializer = MySerializer(data=request.DATA)
if serializer.is_valid():
serializer.save(),
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
但是我后来意识到我不需要查询集,所以我删除了那行和 保留的权限和查询集:
from rest_framework import status
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework.parsers import JSONParser
from rest_api.my_app.serializer import MySerializer
class MyView(APIView):
parser_classes = (JSONParser,)
@staticmethod
def post(self, request, format=None):
serializer = MySerializer(data=request.DATA)
if serializer.is_valid():
serializer.save(),
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
如果我尝试运行代码,我会收到以下错误消息:
AssertionError: Cannot apply DjangoModelPermissions on a view that does not have `.model` or `.queryset` property.'
【问题讨论】:
-
你的查询集应该是
queryset = Bag.objects.all() -
我认为你有一个错字:
,在serializer.save()之后 -
@Sohan 没关系,因为 if 下还有一条语句
标签: django permissions django-rest-framework