2014-04-08 3 views
6

ho già avuto questo punto di vista il mio progetto:AssertionError: Non è possibile applicare DjangoModelPermissions su una visione che non ha `` .model` o proprietà .queryset`

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) 

Tuttavia ho poi capito che non avevo bisogno il set di query e così ho cancellato quella linea e il permesso e set di query di rimanere con:

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) 

Se provo a eseguire il codice ottengo questo messaggio di errore:

AssertionError: Cannot apply DjangoModelPermissions on a view that does not have  `.model` or `.queryset` property.' 
+0

vostro set di query dovrebbe essere 'set di query = Bag.objects.all()' – karthikr

+0

io pensi di avere un errore di battitura: un ',' 'dopo serializer.save()' –

+0

@Sohan è ok perché c'è un'altra istruzione sotto il se – henry12

risposta

9

Questo perché si è rimosso il permesso_classe. È possibile utilizzare permission_classes = (IsAuthenticatedOrReadOnly,)