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':'成功'})   
相关推荐
困鲲鲲14 分钟前
Flask 核心基础:从 路由装饰器 到 __name__ 变量 的底层逻辑解析
python·flask
njxiejing24 分钟前
Python NumPy安装、导入与入门
开发语言·python·numpy
Rhys..43 分钟前
Python&Flask 使用 DBUtils 创建通用连接池
开发语言·python·mysql
Just_Paranoid44 分钟前
【Python Tkinter】图形用户界面(GUI)开发及打包EXE指南
python·gui·tkinter·pyinstaller
小宁爱Python1 小时前
Django 基础入门:命令、结构与核心配置全解析
后端·python·django
tangweiguo030519872 小时前
基于 Django 与 Bootstrap 构建的现代化设备管理平台
后端·django·bootstrap
闲人编程2 小时前
Flask 前后端分离架构实现支付宝电脑网站支付功能
python·架构·flask·支付宝·前后端·网站支付·apl
996终结者2 小时前
同类软件对比(四):Jupyter vs PyCharm vs VS Code:Python开发工具终极选择指南
vscode·python·jupyter·pycharm·visual studio code
果壳~2 小时前
【Python】爬虫html提取内容基础,bs4
爬虫·python·html
尝试经历体验4 小时前
pycharm突然不能正常运行
python·深度学习·pycharm