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())
]

最新文章

  1. js 页面刷新location.reload和location.replace的区别小结
  2. linux操作命令
  3. JVM学习笔记(一)------基本结构【转】
  4. 消除PyCharm中满屏的波浪线
  5. Server2003安装SP2补丁提示密钥无效的解决方法
  6. Nodejs_day04
  7. 【h5-egret】深入浅出对象池
  8. cvsnt 设置用户、修改密码
  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(6)-Unity 2.x依赖注入by运行时注入[附源码]
  10. Java数字、货币值和百分数等的格式化处理
  11. Fedora21无法播放MP4[已解决]
  12. Knockout, Web API 和 ASP.Net Web Forms 进行简单数据绑定
  13. nodejs querystring
  14. ecos的model
  15. C#中运算符的应用
  16. Git:常用功能 - 命令行
  17. Http跨域时的Option请求
  18. 饮冰三年-人工智能-Python-28 企业官网(组合搜索)
  19. sql注入学习 sqlliab教程 lesson1 (sqlliab搭建教程)
  20. mysql存储过程实例,查询多参数赋值

热门文章

  1. 数据分表Mybatis Plus动态表名最优方案的探索
  2. Luogu3243 [HNOI2015]菜肴制作 (拓扑排序)
  3. 论文解读(GATv2)《How Attentive are Graph Attention Networks?》
  4. 图解 Kafka 超高并发网络架构演进过程
  5. Canvas 线性图形(一):路径
  6. 逻辑判断与if and while循环结构
  7. 定制化JDK升级引发的离奇事件
  8. Aoac唤醒的软件方案
  9. 第九十六篇:恶补JS基础
  10. 第九章 kubectl命令行工具使用详解