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':'成功'})   
相关推荐
甲枫叶25 分钟前
【claude+weelinking产品经理系列16】数据可视化——用图表讲述产品数据的故事
java·人工智能·python·信息可视化·产品经理·ai编程
番茄去哪了44 分钟前
Python基础入门(二)
linux·服务器·开发语言·python
未来之窗软件服务1 小时前
AI人工智能(二十一)pt模型转onnx sensvoice—东方仙盟练气期
人工智能·python·仙盟创梦ide·东方仙盟
柒.梧.2 小时前
Java构造器精讲:从基础特征到权限修饰符
开发语言·python
搬砖者(视觉算法工程师)2 小时前
PyApp:一种将 Python 工程打包为可执行文件的简易方法
python
洛的地理研学2 小时前
gma 绘制唐都畿道一府四州
python·gma 教程
张3蜂3 小时前
Python变量与命名规范:从入门到精通
开发语言·python
秦始皇爱找茬3 小时前
Playwright Python Windows 下 headful Chromium 崩溃排查经验分享
python·ui自动化·playwright
十铭忘3 小时前
动作识别12——yolo26s-pose+PoseC3D第1篇之标注工具升级2.0
人工智能·python·深度学习
才兄说3 小时前
机器人租售配合齐不齐?多人同步操作
python