You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

134 lines
4.5 KiB

from rest_framework.response import Response
from rest_framework.status import HTTP_400_BAD_REQUEST, HTTP_204_NO_CONTENT, HTTP_201_CREATED
from django.http import Http404
from snippets.models import Snippet
from snippets.serializers import SnippetSerializer
from rest_framework.views import APIView
# @csrf_exempt
# def snippet_list(request):
# if request.method == 'GET':
# snippets = Snippet.objects.all()
# serializer = SnippetSerializer(snippets,many=True)
# return JsonResponse(serializer.data,safe=False)
#
# elif request.method == 'POST':
# data = JSONParser().parse(request)
# serializer = SnippetSerializer(data=data) # 序列化成JSON格式
# if serializer.is_valid():
# serializer.save()
# return JsonResponse(serializer.data,status=HTTP_201_CREATED)
# return JsonResponse(serializer.errors, status=HTTP_400_BAD_REQUEST)
#
# @csrf_exempt
# def snippet_detail(request,pk):
# try:
# snippet = Snippet.objects.get(pk=pk)
# except Snippet.DoesNotExist:
# return HttpResponse(status=HTTP_400_BAD_REQUEST)
#
# if request.method == 'GET':
# serializer = SnippetSerializer(snippet)
# return JsonResponse(serializer.data)
#
# elif request.method == 'PUT':
# data = JSONParser().parse(request)
# serializer = SnippetSerializer(data=data)
# if serializer.is_valid():
# serializer.save()
# return JsonResponse(serializer.data)
# return JsonResponse(serializer.errors,status=HTTP_400_BAD_REQUEST)
#
# elif request.method == 'DELETE':
# snippet.delete()
# return HttpResponse(status=HTTP_204_NO_CONTENT)
# @api_view(['GET', 'POST'])
# def snippet_list(request, format=None):
# if request.method == 'GET':
# snippets = Snippet.objects.all()
# serializer = SnippetSerializer(snippets,many=True)
# return Response(serializer.data)
#
# elif request.method == 'POST':
# # 序列化成JSON格式
# serializer = SnippetSerializer(data=request.data)
# if serializer.is_valid():
# serializer.save()
# return Response(serializer.data, status=HTTP_201_CREATED)
# return Response(serializer.errors, status=HTTP_400_BAD_REQUEST)
#
# @api_view(['GET', 'PUT', 'DELETE'])
# def snippet_detail(request, pk, format=None):
# try:
# snippet = Snippet.objects.get(pk=pk)
# except Snippet.DoesNotExist:
# return Response(status=HTTP_400_BAD_REQUEST)
#
# if request.method == 'GET':
# serializer = SnippetSerializer(snippet)
# return Response(serializer.data)
#
# elif request.method == 'PUT':
# serializer = SnippetSerializer(snippet,data=request.data)
# if serializer.is_valid():
# serializer.save()
# return Response(serializer.data)
# return Response(serializer.errors,status=HTTP_400_BAD_REQUEST)
#
# elif request.method == 'DELETE':
# snippet.delete()
# return Response(status=HTTP_204_NO_CONTENT)
class SnippetView(APIView):
# 获取所有的snippet
def get(self, request, format=None):
snippets = Snippet.objects.all()
serializer = SnippetSerializer(snippets, many=True)
return Response(serializer.data)
# 创建一个新的snippet
def post(self, request, format=None):
serializer = SnippetSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data,status=HTTP_201_CREATED)
return Response(status=HTTP_400_BAD_REQUEST)
class SnippetDetailView(APIView):
def get_object(self, pk):
try:
return Snippet.objects.get(pk=pk)
except Snippet.DoesNotExist:
return Http404
# 查询某个snippet的数据
def get(self,request,pk,format=None):
snippet = self.get_object(pk)
serializer = SnippetSerializer(snippet)
return Response(serializer.data)
# 更新某个snippet的数据
def put(self,request,pk,format=None):
snippet = self.get_object(pk)
serializer = SnippetSerializer(snippet,data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(status=HTTP_400_BAD_REQUEST)
# 删除某一个snippet
def delete(self,request,pk,format=None):
snippet = self.get_object(pk)
snippet.delete()
return Response(status=HTTP_204_NO_CONTENT)