10.APIView视图
2024-09-08 14:34:49
from rest_framework import status
from rest_framework.response import Response
from snippets.models import Snippet
from snippets.serializers import SnippetSerizlizer
from rest_framework.decorators import APIView # 导入APIView
from django.http.response import Http404 # 定义 类视图 继承APIView
# 内部定义对应的请求方法,会根据前端的请求类型做不同的操作
class SnippetList(APIView):
# 定义get方法
def get(self, request, format=None):
snippets = Snippet.objects.all()
serializer = SnippetSerizlizer(snippets, many=True)
return Response(serializer.data) # 定义post方法
def post(self, request, format=None):
serializer = SnippetSerizlizer(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) class SnippetDEtail(APIView):
def get_object(self, pk):
try:
snippet = Snippet.objects.get(pk=pk)
return snippet
except Snippet.DoesNotExist: # 如果查询不到传入的pk字段,则执行以下代码 return Http404 def get(self, request, pk, format=None):
snippet = self.get_object(pk)
serializer = SnippetSerizlizer(snippet)
return Response(serializer.data) # 定义put方法
def put(self, request, pk, format=None):
snippet = self.get_object(pk)
serializer = SnippetSerizlizer(snippet, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) # 定义删除方法
def delete(self, request, pk, format=None):
snippet = self.get_object(pk)
snippet.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
urlpatterns = [
path('snippets/',views.SnippetList.as_view()),
path('snippets/<int:pk>/',views.SnippetDEtail.as_view())
]
最新文章
- js 页面刷新location.reload和location.replace的区别小结
- linux操作命令
- JVM学习笔记(一)------基本结构【转】
- 消除PyCharm中满屏的波浪线
- Server2003安装SP2补丁提示密钥无效的解决方法
- Nodejs_day04
- 【h5-egret】深入浅出对象池
- cvsnt 设置用户、修改密码
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(6)-Unity 2.x依赖注入by运行时注入[附源码]
- Java数字、货币值和百分数等的格式化处理
- Fedora21无法播放MP4[已解决]
- Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定
- nodejs querystring
- ecos的model
- C#中运算符的应用
- Git:常用功能 - 命令行
- Http跨域时的Option请求
- 饮冰三年-人工智能-Python-28 企业官网(组合搜索)
- sql注入学习 sqlliab教程 lesson1 (sqlliab搭建教程)
- mysql存储过程实例,查询多参数赋值