博主主页:Joyce Lee 博主简介:专注Python技术领域和毕业设计项目实战、网页设计、微信小程序、Vue,React等技术开发,远程调试部署、代码讲解等技术指导。
主要内容:Vue、HTML、Nodejs、Python、小程序、Django、Flask、DRF、React、可视化等设计与开发。感兴趣的可以收藏 + 关注,所有项目均配有开发文档,源码,可以定制化功能开发,远程安装运行!!
🍅文末获取联系🍅 ————————————————
项目介绍
这是一个基于Django+Vue开发的图书借阅管理系统。采用B/S架构,后端使用Python语言基于开发,前端使用Vue.js框架进行开发,数据库使用MySQL。
整个系统包括前台和后台两个部分。
系统演示
基于Django+Vue的图书借阅管理系统
系统功能模块
前台功能模块(读者)
- 登录注册模块
- 图书管理模块(实现查看图书列表、查询图书、查看详情、收藏、借阅、新书推荐、热门推荐等)
- 借阅管理模块(实现自己的借阅、归还、续借等)
- 公告管理(实现查看系统公告)
- 个人中心模块(实现修改个人信息、修改密码、头像等)
- 积分管理(实现查看个人积分使用明细等)
后台功能模块(管理员)
-
数据可视化(实现借阅排行、热门借阅、推荐图书等各种可视化图表)
-
图书管理(实现图书的添加、删除、修改、查询)
-
分类管理(实现分类的添加、删除、修改、查询,平台按照不同分类对图书进行管理,如文学、历史、科学等)
-
标签管理(实现标签的添加、删除、修改、查询)
-
读者管理(实现读者的添加、删除、修改、查询)
-
公告管理(实现系统公告的添加、删除、修改、查询,包括图书借阅规则、新书上架通知、系统维护公告等)
-
借阅管理(实现系统所有借阅的管理)
开发环境
软件包 | 版本 |
---|---|
Node | 16.14.2 |
MySQL | 8.0.31 |
Python | 3.8 |
Vue | 2 |
系统界面
前台
首页
我的借阅
我的积分
系统公告
账号安全
个人设置
后台
首页
借阅管理
图书管理
分类管理
标签管理
用户管理
公告管理
源码实现
读者借阅模块后端源码
# Create your views here.
import datetime
from rest_framework.decorators import api_view, authentication_classes
from myapp.auth.authentication import TokenAuthtication
from myapp.handler import APIResponse
from myapp.models import Borrow, Book
from myapp.serializers import BorrowSerializer
@api_view(['GET'])
def list_api(request):
if request.method == 'GET':
userId = request.GET.get('userId', -1)
borrowStatus = request.GET.get('borrowStatus', '')
borrows = Borrow.objects.all().filter(user=userId).filter(status__contains=borrowStatus).order_by('-borrow_time')
serializer = BorrowSerializer(borrows, many=True)
return APIResponse(code=0, msg='查询成功', data=serializer.data)
@api_view(['POST'])
@authentication_classes([TokenAuthtication])
def create(request):
"""
创建借书
"""
data = request.data.copy()
if data['user'] is None or data['book'] is None:
return APIResponse(code=1, msg='参数错误')
book = Book.objects.get(pk=data['book'])
if book.repertory <= 0:
return APIResponse(code=1, msg='库存不足')
borrows = Borrow.objects.filter(book=data['book']).filter(user=data['user']).filter(status='1')
if len(borrows) > 0:
return APIResponse(code=1, msg='您已经借过该书了')
create_time = datetime.datetime.now()
data['status'] = '1'
data['delayed'] = False
data['create_time'] = create_time
data['expect_time'] = create_time + datetime.timedelta(days=30)
serializer = BorrowSerializer(data=data)
if serializer.is_valid():
serializer.save()
# 减库存
book.repertory = book.repertory - 1
book.save()
return APIResponse(code=0, msg='借书成功', data=serializer.data)
else:
print(serializer.errors)
return APIResponse(code=1, msg='借书失败')
@api_view