Django_基本增删改查

一、前提概述

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

二、模型展示

python 复制代码
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

三、查询接口

python 复制代码
    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})

四、添加接口

python 复制代码
    #添加一条图书信息
    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':'成功'})

五、修改接口

python 复制代码
    #修改一条图书信息
    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 = name
            book.status = status
            book.save()
            return JsonResponse({'code':200,'message':'成功'})

六、删除接口

python 复制代码
    #删除一条信息
    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.id
        try:
            book = Books.objects.get(id=id)
        except Exception as e:
            return JsonResponse({'code':2005,'message':'图书不存在'})
        else:
            book.delete()
            return JsonResponse({'code':200,'message':'成功'})   
相关推荐
飞猪~2 小时前
LangChain python 版本 第一集
开发语言·python·langchain
2601_956319883 小时前
最新AI量化提效,先做可验证的小流程
人工智能·python
开飞机的舒克_5 小时前
FastAPI 实战入门:从路由、参数校验到依赖注入的后端开发指南
python·fastapi
霸道流氓气质5 小时前
Kiro 中反编译 JAR 包并分析字节码的流程指南
chrome·python·jar
人工智能时代 准备好了吗5 小时前
AI回答内容进入率监测:引用识别、文本匹配与语义判断
开发语言·人工智能·python
Metaphor6926 小时前
使用 Python 冻结 Excel 文件中的行、列和单元格
开发语言·python·excel
言乐66 小时前
Python实现建造微服务商城后台
开发语言·python·算法·微服务·架构
fenglllle7 小时前
chromadb emmbedding 向量检索
人工智能·python·embedding
cui_ruicheng7 小时前
Python从入门到实战(六):非序列容器
开发语言·python
百里香酚兰7 小时前
【python学习笔记】pyttsx3库疑似只播报一次语音
笔记·python·学习