10.APIView视图
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()) ]
风月都好看,人间也浪漫.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
2019-04-29 Linux常用命令