当前位置: 首页 > 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':'成功'})   

http://www.lryc.cn/news/292835.html

相关文章:

  • 数仓治理-存储资源治理
  • Linux系统安全:安全技术 和 防火墙
  • 3dmatch-toolbox详细安装教程-Ubuntu14.04
  • Hadoop与Spark横向比较【大数据扫盲】
  • 软件工程知识梳理5-实现和测试
  • WebRTC系列-自定义媒体数据加密
  • golang的sqlite驱动不使用cgo实现 更换gorm默认的SQLite驱动
  • Linux 系统 ubuntu22.04 发行版本 固定 USB 设备端口号
  • Vue - 面试题持续更新
  • Django的web框架Django Rest_Framework精讲(二)
  • VR视频编辑解决方案,全新视频内容创作方式
  • 有趣的CSS - 输入框选中交互动效
  • Unknown custom element:<xxx>-did you register the component correctly解决方案
  • 计算机网络自顶向下Wireshark labs-HTTP
  • 解决pandas写入excel时的ValueError: All strings must be XML compatible报错
  • 华为手表应用APP开发:watch系列 GT系列 1.配置调试设备
  • Vue(十九):ElementUI 扩展实现树形结构表格组件的勾父选子、半勾选、过滤出半勾选节点功能
  • SpringBoot RestTemplate 设置挡板
  • arcgis javascript api4.x加载非公开或者私有的arcgis地图服务
  • 2024年美赛数学建模A题思路分析 - 资源可用性和性别比例
  • UDP和TCP的区别和联系
  • delete、truncate和drop区别
  • 946. 验证栈序列
  • Linux系统管理和Shell脚本笔试题
  • docker 搭建 Seafile 集成 onlyoffice
  • 【Spring Boot 3】【JPA】嵌入式对象
  • STM32控制DS18B20温度传感器获取温度
  • 服务器常遇的响应状态码
  • 云原生业务全流程DevOps配置预研与实践
  • SouthLeetCode-打卡24年01月第5周