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