|
1 |
| -from django.http import HttpResponse, JsonResponse |
2 |
| -from django.views.decorators.csrf import csrf_exempt |
3 |
| -from rest_framework.parsers import JSONParser |
| 1 | +from rest_framework import status |
| 2 | +from rest_framework.decorators import api_view |
| 3 | +from rest_framework.response import Response |
4 | 4 | from snippets.models import Snippet
|
5 | 5 | from snippets.serializers import SnippetSerializer
|
6 | 6 |
|
7 |
| -@csrf_exempt |
8 |
| -def snippet_list(request): |
| 7 | + |
| 8 | +@api_view(['GET', 'POST']) |
| 9 | +def snippet_list(request, format=None): |
9 | 10 | """
|
10 | 11 | List all code snippets, or create a new snippet.
|
11 | 12 | """
|
12 | 13 | if request.method == 'GET':
|
13 | 14 | snippets = Snippet.objects.all()
|
14 | 15 | serializer = SnippetSerializer(snippets, many=True)
|
15 |
| - return JsonResponse(serializer.data, safe=False) |
| 16 | + return Response(serializer.data) |
16 | 17 |
|
17 | 18 | elif request.method == 'POST':
|
18 |
| - data = JSONParser().parse(request) |
19 |
| - serializer = SnippetSerializer(data=data) |
| 19 | + serializer = SnippetSerializer(data=request.data) |
20 | 20 | if serializer.is_valid():
|
21 | 21 | serializer.save()
|
22 |
| - return JsonResponse(serializer.data, status=201) |
23 |
| - return JsonResponse(serializer.errors, status=400) |
24 |
| - |
| 22 | + return Response(serializer.data, status=status.HTTP_201_CREATED) |
| 23 | + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) |
| 24 | + |
25 | 25 |
|
26 |
| -@csrf_exempt |
27 |
| -def snippet_detail(request, pk): |
| 26 | +@api_view(['GET', 'PUT', 'DELETE']) |
| 27 | +def snippet_detail(request, pk, format=None): |
28 | 28 | """
|
29 | 29 | Retrieve, update or delete a code snippet.
|
30 | 30 | """
|
31 | 31 | try:
|
32 | 32 | snippet = Snippet.objects.get(pk=pk)
|
33 | 33 | except Snippet.DoesNotExist:
|
34 |
| - return HttpResponse(status=404) |
| 34 | + return Response(status=status.HTTP_404_NOT_FOUND) |
35 | 35 |
|
36 | 36 | if request.method == 'GET':
|
37 | 37 | serializer = SnippetSerializer(snippet)
|
38 |
| - return JsonResponse(serializer.data) |
| 38 | + return Response(serializer.data) |
39 | 39 |
|
40 | 40 | elif request.method == 'PUT':
|
41 |
| - data = JSONParser().parse(request) |
42 |
| - serializer = SnippetSerializer(snippet, data=data) # 把 pk 对应的 snippet update 成 PUT method 传进来的 data |
| 41 | + serializer = SnippetSerializer(snippet, data=request.data) |
43 | 42 | if serializer.is_valid():
|
44 | 43 | serializer.save()
|
45 |
| - return JsonResponse(serializer.data) |
46 |
| - return JsonResponse(serializer.errors, status=400) |
| 44 | + return Response(serializer.data) |
| 45 | + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) |
47 | 46 |
|
48 | 47 | elif request.method == 'DELETE':
|
49 | 48 | snippet.delete()
|
50 |
| - return HttpResponse(status=204) |
51 |
| - |
| 49 | + return Response(status=status.HTTP_204_NO_CONTENT) |
0 commit comments