当前位置: 首页 > news >正文

Django_基本增删改查

一、前提概述

通过项目驱动来学习,以图书管理系统为例,编写接口来实现对图书信息的查询,图书的添加,图书的修改,图书的删除等功能。(不包含多重信息的校验,只为了熟悉增删改查接口的实现流程)

二、模型展示

class Books(models.Model):id = models.CharField(primary_key=True, max_length=20, verbose_name='图书编号')name = models.CharField(max_length=50, verbose_name='书名')status = models.BooleanField(verbose_name='是否出借', default=False,blank=True)class Meta:db_table = 'book'verbose_name = '图书表'def __str__(self):return self.name

三、查询接口

    def get(self,request):#进行账号验证,只用通过登录,才可以实现查询功能if not request.user.is_authenticated:return JsonResponse({'code':2001,'message':'账号认证失败'})#获取所有图书对象bs = Books.objects.all()data = []#以字典的形式封装每一条图书信息并进行存储for b in bs:dic = {'id':b.id,'name':b.name,'status':b.status}data.append(dic)return JsonResponse({'code':200,'message':'获取成功','data':data})

四、添加接口

    #添加一条图书信息def post(self,request):#进行账号验证,只用通过登录,才可以实现查询功能if not request.user.is_authenticated:return JsonResponse({'code':2001,'message':'账号认证失败'})#获取所要添加图书的信息params = request.POST if len(request.POST) else json.loads(request.body.decode())id = params.get('id')name = params.get('name')#进行信息为空验证if not(id and name):return JsonResponse({'code': 2002, 'message': '信息不能为空值'})if not isinstance(id,str):return JsonResponse({'code':2003,'message':'信息需为字符串形式'})if not isinstance(name,str):return JsonResponse({'code':2003,'message':'信息需为字符串形式'})try:Books.objects.create(id=id,name=name)except Exception as e:return JsonResponse({'code':2004,'message':'书籍已存在'})else:return JsonResponse({'code':200,'message':'成功'})

五、修改接口

    #修改一条图书信息def put(self,request):#进行账号验证,只用通过登录,才可以实现查询功能if not request.user.is_authenticated:return JsonResponse({'code':2001,'message':'账号认证失败'})#获取修改信息params = request.POST if len(request.POST) else json.loads(request.body.decode())id = params.get('id')name = params.get('name')status = params.get('status')try:book = Books.objects.get(id=id)except Exception as e:return JsonResponse({'code':2005,'message':'图书不存在'})else:book.name = namebook.status = statusbook.save()return JsonResponse({'code':200,'message':'成功'})

六、删除接口

    #删除一条信息def delete(self,request):#进行账号验证,只用通过登录,才可以实现查询功能if not request.user.is_authenticated:return JsonResponse({'code':2001,'message':'账号认证失败'})params = request.POST if len(request.POST) else json.loads(request.body.decode())id = params.idtry:book = Books.objects.get(id=id)except Exception as e:return JsonResponse({'code':2005,'message':'图书不存在'})else:book.delete()return JsonResponse({'code':200,'message':'成功'})   

相关文章:

  • Leetcode—2950. 可整除子串的数量【中等】Plus(前缀和题型)
  • 面试经典 150 题 -- 滑动窗口 (总结)
  • 异步解耦之RabbitMQ(四)_消息持久化及ACK机制
  • 【android】对于google-webrtc的性能中, memory leak
  • MtfLive直播导航PHP源码,附带系统搭建教程
  • Modbus协议学习第六篇之基于libmodbus库的示例程序(可以联合Modbus模拟仿真软件进行调试)
  • VMware中CentOS 7解决网络问题
  • golang的sqlite驱动不使用cgo实现 更换gorm默认的SQLite驱动
  • Python开源项目周排行 2024年第3周
  • docker- php7.4
  • (安卓)跳转应用市场APP详情页的方式
  • 六、Nacos源码系列:Nacos健康检查
  • 第八篇:node模版引擎Handlebars及他的高级用法(动态参数)
  • 基于muduo网络库开发服务器程序和CMake构建项目 笔记
  • 自动保存知乎上点赞的内容至本地
  • 收藏网友的 源程序下载网
  • 【知识碎片】第三方登录弹窗效果
  • axios 和 cookie 的那些事
  • centos安装java运行环境jdk+tomcat
  • CSS居中完全指南——构建CSS居中决策树
  • IOS评论框不贴底(ios12新bug)
  • Javascript编码规范
  • Joomla 2.x, 3.x useful code cheatsheet
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • MobX
  • node-glob通配符
  • PHP的类修饰符与访问修饰符
  • rabbitmq延迟消息示例
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Solarized Scheme
  • SpiderData 2019年2月23日 DApp数据排行榜
  • SpringCloud集成分布式事务LCN (一)
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • vue的全局变量和全局拦截请求器
  • vue总结
  • 复习Javascript专题(四):js中的深浅拷贝
  • 简单数学运算程序(不定期更新)
  • 如何编写一个可升级的智能合约
  • 深入浏览器事件循环的本质
  • 一天一个设计模式之JS实现——适配器模式
  • 译自由幺半群
  • Python 之网络式编程
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 通过调用文摘列表API获取文摘
  • # include “ “ 和 # include < >两者的区别
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #if #elif #endif
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (4)logging(日志模块)
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C语言)二分查找 超详细
  • (day 12)JavaScript学习笔记(数组3)
  • (二)Eureka服务搭建,服务注册,服务发现