图书管理系统
1506 字
8 分钟
图书管理系统
- 1纯手撸Web框架
- 2Python框架初识
- 3Django框架初识
- 4Django框架安装
- 5Django框架入门之小白必会三板斧
- 6Django便捷函数shortcuts
- 7Django框架入门之静态文件
- 8Django的静态文件
- 9Django框架入门之request对象
- 10Django框架入门之ORM操作
- 11Django框架之生命周期流程图
- 12Django框架之路由层
- 13Django框架之视图层
- 14Django框架之模板层
- 15Django框架之模型层
- 16图书管理系统本文
- 17Ajax基础操作
- 18Ajax进阶操作
- 19JS确认插件补充
- 20Django框架之序列化组件serializers
- 21Django框架之批量插入数据
- 22Django框架补充之分页器推导
- 23Django框架之Form组件
- 24Django框架Form组件之常用字段及插件
- 25Django框架Form组件之渲染HTML代码
- 26Django框架Form组件之渲染错误信息
- 27Django框架Form组件之钩子函数(Hook)
- 28Django框架Form组件之源码
- 29Django框架Form组件之模型表单ModelForm
- 30Django表单API详解
- 31Django框架之Cookie和Session
- 32Django框架之会话session补充
- 33Django框架之CBV添加装饰器的三种方式
- 34Django框架之中间件引入
- 35Django框架之中间件思想
- 36Django框架之csrf跨站请求
- 37Django框架之auth模块
- 38Django框架之settings源码
- 39Django框架之settings配置
- 40Django框架之settings核心配置项
- 41RBAC权限系统
- 42前端基础之URL编码
【一】基础准备
【1】创建Django项目
django-admin startproject BookControlSystem- 或者借助第三方软件,如Pycharm
【2】创建APP
# 创建图书APPpython manage.py startapp book# 创建作者APPpython manage.py startapp author# 创建出版社APPpython manage.py startapp publish【3】注册APP
- 将创建的三个APP注册到Django的配置文件中
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 注册自己创建的APP "book.apps.BookConfig", "author.apps.AuthorConfig", "publish.apps.PublishConfig"]【4】修改中间件
- 因为是走form表单的post请求,注释掉csrf校验的中间件
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 走 form 表单,发送post请求需要避开 csrf 认证 # 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',]【5】模板文件配置
- 增加更多可被检索到的模板文件目录
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [ # 增加模板文件路径 os.path.join(BASE_DIR, 'templates'), os.path.join(BASE_DIR, 'book', 'templates'), os.path.join(BASE_DIR, 'publish', 'templates'), os.path.join(BASE_DIR, 'author', 'templates'), ] , 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, },]【6】静态文件配置
- 本项目需要使用到的bootstrap和jQuery等第三方插件使用的是本地的静态文件
STATIC_URL = 'static/'# 添加 static 静态文件目录STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static')]【7】数据库配置
- 本项目采用MySQL作为主要存储数据库
# 默认的sqlite3数据库# DATABASES = {# 'default': {# 'ENGINE': 'django.db.backends.sqlite3',# 'NAME': BASE_DIR / 'db.sqlite3',# }# }
# 自主使用MySQL数据库
# 创建数据库# create database book_system;
# 数据库配置DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': "book_system", 'USER': "root", 'PASSWORD': "123456", 'HOST': "127.0.0.1", 'PORT': 3306 }}
# 解决Django连接MySQL报错# 方式一:安装 mysqlclient# pip install mysqlclient# 方式二:猴子补丁# import pymysql# pymysql.install_as_MySQLdb()【八】修改时区
# 默认所有报错为英文# LANGUAGE_CODE = 'en-us'# 默认时区为国际时区# TIME_ZONE = 'UTC'
# 修改汉化LANGUAGE_CODE = 'zh-hans'# 修改时区为上海时区TIME_ZONE = 'Asia/Shanghai'【二】表分析及字段创建
【1】图书表
| 字段名 | 字段类型 | Django数据类型 | 注释 |
|---|---|---|---|
| title | varchar(32) | CharField | 书籍名称 |
| price | float | DecimalField | 书籍价格 |
| level | int | IntegerField | 书籍推荐指数 |
| desc | text | TextField | 书籍简介 |
| cover | varchar | CharField | 书籍封面链接 |
| publication_date | datetime | DateTimeField | 书籍出版日期 |
| publish | foreign | ForeignKey | 书籍关联出版社 |
| author | foreign | ManyToManyField | 书籍关联作者 |
- book/models.py
from django.db import models
# Create your models here.# 创建图书表class Book(models.Model): level = ( (0, "不推荐"), (1, "推荐"), (2, "非常推荐"), (3, "强烈推荐"), ) # 书名 title = models.CharField(max_length=32, verbose_name="书名", help_text="这本书的名字") # 价格 # max_digits:数字允许的最大位数(即:包含小数点之前和小数点之后所有的数字个数的和) # decimal_places:小数的最大位数(即:小数点之后的最大个数) price = models.DecimalField(max_digits=5, decimal_places=2, verbose_name="价格", help_text="这本书的价格") # 推荐级别 level = models.IntegerField(choices=level, verbose_name="推荐级别", help_text="这本书的推荐级别") # 简介 desc = models.TextField(verbose_name="简介", help_text="这本书的简介") # 封面图片链接 cover = models.CharField(max_length=255, verbose_name="封面图片链接", help_text="这本书的封面图片链接") # 出版日期 publication_date = models.DateTimeField(auto_now_add=True) # 图书关联出版社:出版社一,图书多,外键关系在图书 publish = models.ForeignKey(to="publish.Publish", on_delete=models.CASCADE, verbose_name="出版社", help_text="这本书的出版社", null=True, blank=True) # 图书关联作者:作者多,图书多,创建第三张表 author = models.ManyToManyField(to="author.Author", verbose_name="作者", help_text="这本书的作者")
class Meta: # 定制数据库表名 db_table = "book" # 定制管理员后台显示名 verbose_name_plural = "图书表"【2】作者表
(1)作者表
| 字段名 | 字段类型 | Django数据类型 | 注释 |
|---|---|---|---|
| name | varchar | CharField | 作者姓名 |
| age | int | IntegerField | 作者年龄 |
| gender | int | IntegerField | 作者性别 |
| detail | foreign | OneToOneField | 作者关联作者详情 |
(2)作者详情表
| 字段名 | 字段类型 | Django数据类型 | 注释 |
|---|---|---|---|
| phone | bigint | BigIntegerField | 作者电话 |
| varcahr | EmailField | 作者邮箱 | |
| addr | varcahr | CharField | 作者地址 |
from django.db import models
# Create your models here.# 创建作者表class Author(models.Model): gender_choices = ( (0, "女"), (1, "男"), (2, "保密") ) # 作者姓名 name = models.CharField(max_length=32, verbose_name="作者姓名", help_text="作者的姓名") # 作者年龄 age = models.IntegerField(verbose_name="作者年龄", help_text="作者的年龄") # 性别 gender = models.IntegerField(choices=gender_choices, verbose_name="作者性别", help_text="作者的性别") # 作者关联作者详情:一个作者只有一个作者详情,一对一关系,建立在表使用频率高的一方 detail = models.OneToOneField(to="AuthorDetail", null=True, blank=True, on_delete=models.CASCADE, verbose_name="作者详情", help_text="作者的详情")
class Meta:shu'ji # 定制数据库表名 db_table = "author" # 定制管理员后台显示名 verbose_name_plural = "作者表"
class AuthorDetail(models.Model): # 手机号 phone = models.BigIntegerField(verbose_name="手机号", help_text="作者的手机号") # 邮箱 email = models.EmailField(verbose_name="邮箱", help_text="作者的邮箱") # 住址 addr = models.CharField(max_length=255, verbose_name="住址", help_text="作者的住址")
class Meta: # 定制数据库表名 db_table = "author_detail" # 定制管理员后台显示名 verbose_name_plural = "作者详情表"【3】出版社表
| 字段名 | 字段类型 | Django数据类型 | 注释 |
|---|---|---|---|
| name | varcahr | CharField | 出版社名称 |
| addr | varchar | CharField | 出版社地址 |
| phone | bigint | BigIntegerField | 出版社电话 |
| varcahr | EmailField | 出版社邮箱 |
from django.db import models
# Create your models here.# 创建出版设表class Publish(models.Model): # 出版社名字 name = models.CharField(max_length=32, verbose_name='出版社', help_text="出版社的名字") # 出版社地址 addr = models.CharField(max_length=255, verbose_name='地址', help_text="出版社的地址") # 出版社电话 phone = models.BigIntegerField(verbose_name='电话', help_text="出版社的电话") # 出版社邮箱 email = models.EmailField(verbose_name='邮箱', help_text="出版社的邮箱")
class Meta: # 定制数据库表名 db_table = "publish" # 定制管理员后台显示名 verbose_name_plural = "出版社表"【迁移数据库】
- 生成迁移文件
python manage.py makemigrations- 迁移文件生效
python manage.py migrate【初始化数据】
【三】图书管理系统首页
【1】后端
【2】前端
【四】图书相关功能
【1】图书详情
(1)前端
(2)后端
【2】添加图书
(1)前端
(2)后端
【3】编辑图书
(1)前端
(2)后端
【4】删除图书
(1)前端
(2)后端
【五】作者相关功能
【1】作者详情
(1)前端
(2)后端
【2】添加作者
(1)前端
(2)后端
【3】编辑作者
(1)前端
(2)后端
【4】删除作者
(1)前端
(2)后端
【六】出版社相关功能
【1】出版社详情
(1)前端
(2)后端
【2】添加出版社
(1)前端
(2)后端
【3】编辑出版社
(1)前端
(2)后端
【4】删除出版社
(1)前端
(2)后端
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
C 语言发展史
编程语言了解 C 语言从 BCPL、B 语言到现代标准 C 的发展历程、核心特点与应用领域。
2
C 语言开发环境的安装与配置
编程语言在 Windows、Linux 与 macOS 上安装 C 工具链,配置编辑器,并编译运行第一个 C 程序。
3
C 语言初识:程序运行机制与基本结构
编程语言认识 C 程序从源代码到运行的完整流程,以及基础语法和程序的基本结构。
4
C 语言基础:注释、关键字、变量与数据类型
编程语言学习 C 语言的注释、关键字、标识符、常量、变量和基本数据类型等基础知识。
5
C 语言数据类型
编程语言理解 C 语言的数据类型体系,包括基本类型、整数类型、浮点类型和逻辑类型。
随机文章随机推荐














