一、前提概述
通过项目驱动来学习,以图书管理系统为例,编写接口来实现对图书信息的查询,图书的添加,图书的修改,图书的删除等功能。(不包含多重信息的校验,只为了熟悉增删改查接口的实现流程)
二、模型展示
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':'成功'})