1
1
from django .contrib .auth .models import User
2
2
from snippets .models import Snippet
3
3
from snippets .serializers import SnippetSerializer , UserSerializer
4
- from rest_framework import generics , permissions
4
+ from rest_framework import generics , permissions , renderers
5
+ from rest_framework .decorators import api_view
6
+ from rest_framework .response import Response
7
+ from rest_framework .reverse import reverse
5
8
from .permissions import IsOwnerOrReadOnly
6
9
7
10
11
+ @api_view (['GET' ])
12
+ def api_root (request , format = None ):
13
+ return Response ({
14
+ 'users' : reverse ('user-list' , request = request , format = format ),
15
+ 'snippets' : reverse ('snippet-list' , request = request , format = format )
16
+ })
17
+
8
18
class SnippetList (generics .ListCreateAPIView ):
9
19
queryset = Snippet .objects .all ()
10
20
serializer_class = SnippetSerializer
@@ -19,13 +29,24 @@ def perform_create(self, serializer):
19
29
class SnippetDetail (generics .RetrieveUpdateDestroyAPIView ):
20
30
queryset = Snippet .objects .all ()
21
31
serializer_class = SnippetSerializer
22
- permission_classes = [permissions .IsAuthenticatedOrReadOnly , IsOwnerOrReadOnly ]
23
-
32
+ permission_classes = [permissions .IsAuthenticatedOrReadOnly , IsOwnerOrReadOnly ] # IsOwnerOrReadOnly: custom object-level permission
24
33
34
+
35
+ class SnippetHighlight (generics .GenericAPIView ):
36
+ queryset = Snippet .objects .all ()
37
+ renderer_classes = [renderers .StaticHTMLRenderer ]
38
+
39
+ def get (self , request , * args , ** kwargs ):
40
+ snippet = self .get_object ()
41
+ return Response (snippet .highlighted )
42
+
43
+
25
44
class UserList (generics .ListAPIView ):
26
45
queryset = User .objects .all ()
27
46
serializer_class = UserSerializer
47
+ permission_classes = [permissions .IsAdminUser ]
28
48
29
49
class UserDetail (generics .RetrieveAPIView ):
30
50
queryset = User .objects .all ()
31
51
serializer_class = UserSerializer
52
+ permission_classes = [permissions .IsAdminUser ]
0 commit comments