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':'成功'})   
相关推荐
爱笑的眼睛1139 分钟前
超越可视化:降维算法组件的深度解析与工程实践
java·人工智能·python·ai
清铎1 小时前
leetcode_day12_滑动窗口_《绝境求生》
python·算法·leetcode·动态规划
ai_top_trends1 小时前
2026 年工作计划 PPT 横评:AI 自动生成的优劣分析
人工智能·python·powerpoint
TDengine (老段)1 小时前
TDengine Python 连接器进阶指南
大数据·数据库·python·物联网·时序数据库·tdengine·涛思数据
brent4232 小时前
DAY50复习日
开发语言·python
万行2 小时前
机器学习&第三章
人工智能·python·机器学习·数学建模·概率论
Data_agent2 小时前
Cocbuy 模式淘宝 / 1688 代购系统(欧美市场)搭建指南
开发语言·python
m0_726365832 小时前
哈希分分预测系统 打造自适应趋势分析「Python+DeepSeek+PyQt5」
python·qt·哈希算法
vyuvyucd2 小时前
Qwen-1.8B-Chat昇腾Atlas800TA2部署实战
python
轻竹办公PPT3 小时前
2026 年工作计划 PPT 内容拆解,对比不同 AI 生成思路
人工智能·python·powerpoint