吖昭的技术笔记
跟着吖昭写笔记,从 0 到 1 的技术成长看得见
文章48浏览1890本站已运行7723

《用 Django 打造在线图书管理系统》:记录从数据库设计到权限管理的开发流程,包含模板引擎的进阶用法。

《用 Django 打造在线图书管理系统》
在线图书管理系统是图书馆、书店等场景的核心工具,需实现图书信息管理、借阅流程跟踪、用户权限控制等功能。Django 作为 “电池内置” 的 Python Web 框架,凭借 ORM 系统、认证系统和模板引擎,能快速构建功能完整且安全的管理系统。以下从数据库设计到权限管理,详解系统开发全流程,并重点介绍模板引擎的进阶用法。
一、数据库设计:用 Django ORM 映射核心实体
图书管理系统的核心实体包括「图书」「作者」「借阅记录」「用户」,通过 Django ORM 可将实体关系转化为模型类,无需直接编写 SQL。
1. 模型定义(models.py

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.utils import timezone
# 扩展内置用户模型:区分管理员、普通读者
class User(AbstractUser):
user_type = models.CharField(max_length=10, choices=[
('admin', '管理员'),
('reader', '读者')
], default='reader')
phone = models.CharField(max_length=11, blank=True, verbose_name='手机号')
class Meta:
verbose_name = '用户'
verbose_name_plural = '用户'
# 作者模型(与图书为一对多关系)
class Author(models.Model):
name = models.CharField(max_length=50, verbose_name='姓名')
biography = models.TextField(blank=True, verbose_name=' biography')
birth_year = models.PositiveIntegerField(null=True, blank=True, verbose_name='出生年份')
def __str__(self):
return self.name
class Meta:

2. 模型关系说明
-** 一对一 :扩展User模型与 Django 内置用户表通AbstractUser继承实现字段扩展。
- 一对多 AuthorBook为一对多关系(一个作者可写多本书),通ForeignKey实现,related_name='books'允许通过作者查询其所有图书(author.books.all())。
- 多对多 **:用户与图书的借阅关系通BorrowRecord中间表实现,隐含多对多关联(一个用户可借多本书,一本书可被多用户借阅)。
二、视图与 URL 配置:实现核心业务逻辑
基于 Django ViewViewSet(Django REST framework)实现图书查询、借阅、归还等功能,通过 URL 路由映射请求到视图。
1. 图书列表与详情视图

2. 借阅功能视图(需登录且权限控制)

3. URL 配置(urls.py

三、模板引擎进阶:复用与动态渲染
Django 模板引擎支持继承、 inclusion_tag、过滤器等高级特性,可大幅减少代码冗余,实现动态内容渲染。
1. 模板继承:统一页面布局
创建基础模base.html,定义页面骨架(头部、导航、底部),子模板通extends继承并填充内容:

子模板使用示例:

2. inclusion_tag:复用组件
将常用组件(如图书卡片、借阅状态标签)封装inclusion_tag,在多个模板中复用:

对应的模板文件:

在其他模板中使用:

3. 自定义过滤器:处理数据格式
创建过滤器格式化日期、计算逾期天数等:

在模板中使用:

四、权限管理:基于 Django 认证系统
利用 Django 内置LoginRequiredMixinUserPassesTestMixin和自定义权限检查,控制不同用户的操作权限。
1. 页面访问权限控制
-** 读者 :可查看图书、借阅 / 归还图书、查看自己的借阅记录。
- 管理员 **:除读者权限外,可添加 / 编辑图书、管理用户、查看所有借阅记录。
UserPassesTestMixin实现角色校验:

2. 模板中条件渲染
根据用户角色显示不同内容:

3. 表单权限控制
在表单中限制管理员专属字段(如库存调整):

视图中传递用户对象:

五、系统部署与扩展建议
1.** 静态文件处理 :生产环境使whitenoise或 Nginx 托管静态文件(python manage.py collectstatic收集静态文件)。
2. 数据库优化 :为频繁查询的字段(isbnstatus)创建索引,批量操作使bulk_create/bulk_update
3. 扩展功能 **:
  • 集成 Django REST framework 提供 API 接口,支持移动端访问。
  • 添加图书预约、逾期罚款计算等功能。
  • 使用 Celery 定时任务自动更新逾期状态。
总结:Django 开发优势与最佳实践
Django 的 ORM 系统简化了数据库操作,模板引擎的继承与复用机制提升了前端开发效率,认证系统则快速实现了权限控制
上一篇:
下一篇:

相关推荐

你必须 登录 才能发表评论.

隐藏边栏