DRF框架--用django实现REST标准接口
响应数据: JSON
# 列表视图: 路由后面没有pk/ID
# 详情视图: 路由后面pk/ID
from django.shortcuts import render # Create your views here. from django.views import View class BookListView(View): '''列表视图''' def get(self,request): '''查询所有图书接口''' pass def post(self,request): '''新增图书接口''' # 获取前端传入的请求体数据(json) request.body json_str_bytes = request.body # 将bytes类型的json字符串转换成json_str json_str = json_str_bytes.decode() # 利用json.loads将json字符串转换成json(字典或列表) book_dict = json.loads(json_str) # 创建模型对象并保存(将字典转换成模型并存储) book = BookInfo( btitle = book_dict['btitle'], bpub_date = book_dict['bpub_date'] ) book.save() # 响应(将新增的数据再响应回去,201) json_dict = { 'id': book.id, 'btitle': book.title, 'bpub_date': book.bpub_date, 'bread': book.read } return JsonResponse(json_dict,status=201) class BookDetailView(View): '''详情视图''' def get(self,request,pk): '''查询指定某个图书接口''' # 1.获取指定pk的模型对象 try: book = BookInfo.objects.get(id=pk) except BookInfo.DoesNotExist: return HttpResponse({'message':'查询的数据不存在'},status=404) # 2.模型对象转字典 book_dict = { 'id': book.id, 'btitle': book.title, 'bpub_date': book.bpub_date, 'bread': book.read } # 3.响应 return JsonResponse(book_dict) def put(self,request,pk): '''指定图书修改接口''' pass def delete(self,request,pk): '''指定图书删除接口''' pass
- 之所以写两个视图类,是因为有两个get函数,无法放到一个视图类中
- 同样,因为第二个详情视图类是需要pk参数的,所以也需要另外写一个视图类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通