django -APIView的使用
1.APIView的使用:#
1.1 在 user/urls.py 中添加路由#
from django.contrib import admin
from django.urls import path
from bookapp.views import *
urlpatterns = [
path('admin/', admin.site.urls),
path('book/cate/', CateView.as_view()),
]
1.2创建user/serializers.py写序列化器#
from rest_framework import serializers
from .models import *
class Cateser(serializers.ModelSerializer):
class Meta:
model = Cate #数据库表名
fields = "__all__" #序列化所有字段
#depth = 1 # 外键序列化 添加了这个关联的外键都会查询出来
class Bookser(serializers.ModelSerializer):
class Meta:
model = Book
fields = "__all__"
1.3 在 user/views.py 中添加视图函数#
from .models import *
from rest_framework.views import APIView
from rest_framework.response import Response
from .sers import *
class CateView(APIView):
# get是查询数据 post是添加数据
def get(self, request):
cate = Cate.objects.all() # 查询所有数据 他是一个查询集
ser = Cateser(cate, many=True) # 因为查询的是一个查询集 所以需要些many=True
return Response(ser.data)
def post(self, request):
ser = Cateser(data=request.data)
resp = {}
if ser.is_valid():
ser.save()
resp['code'] = 200
resp['code'] = ser.data
else:
print(ser.errors)
resp['code'] = 400
resp['code'] = ser.errors
return Response(resp)
def put(self, request): # put 修改数据 完全修改数据 patch 部分修改数据
# 想要修改的话 需要知道要修改谁 还要知道最新的数据 data=xxx 传递的新的值
id = request.GET.get('id')
# first是从查询集中 获取一个model对象
cate = Cate.objects.filter(id=id).first()
# 传递 两个参数 参数1是要修改的数据 参数2是要赋予的新值
ser = Cateser(instance=cate, data=request.data)
resp = {}
if ser.is_valid():
ser.save()
resp['code'] = 200
else:
resp['code'] = 400
return Response(resp)
def delete(self, request):
# 需要知道删除谁
id = request.GET.get('id')
resp = {}
try:
Cate.objects.filter(id=id).delete()
resp['code'] = 200
except Exception as e:
print(e)
resp['code'] = 400
return Response(resp)
作者:就学45分钟
出处:https://www.cnblogs.com/tjw-bk/p/13854380.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
分类:
Django-APIView
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了