【Django】图书管理
一、实现步骤
(一)创建Django项目 - books
(二)创建并注册应用 - index
1、创建index应用
在控制台执行python manage.py startapp index
启动项目,访问http://127.0.0.1:8000(点击run运行)
2、注册index应用
(三)创建数据库 - books
(四)配置MySQL数据库连接信息
(五)设置MySQL数据库连接模块
(六)实现数据迁移生成表
- 依次执行下述两条命令
- 1.生成迁移文件
python manage.py makemigrations
2.同步到数据库中
python manage.py migrate
如果出现以下情况
那就是兼容性出现了问题
可以尝试用以下方法(将标出的一段复制到百度)
-
代码如下(放在--init--.py文件内):
import pymysql pymysql.version_info = (1, 4, 13, "final", 0) pymysql.install_as_MySQLdb()
即可查看生成的数据表
(七)创建模型
1、创建图书模型 - Book
- 在index的models.py文件里定义Book模型类
from django.db import models# Create your models here.
# 创建图书模型
class Book(models.Model):id = models.AutoField(primary_key=True)number = models.CharField('总编号', max_length=10)category = models.CharField('分类号', max_length=10)name = models.CharField('书名', max_length=50)author = models.CharField('作者', max_length=10)press = models.CharField('出版单位', max_length=50)price = models.DecimalField('单价', decimal_places=2, max_digits=6)def __str__(self):return str(self.name)# 创建用户模型
class User(models.Model):id = models.AutoField(primary_key=True)username = models.CharField('用户名', max_length=20)password = models.CharField('密码', max_length=50)last_login_time = models.DateTimeField('上次登录时间!')def __str__(self):return str(self.username)
(八)数据迁移,生成图书表与用户表
- 依次执行下面两条命令
- 1.python manage.py makemigrations
- 2.python manage.py migrate index 0001_initial 或 (python manage.py migrate)
(九)给图书表与用户表添加记录
1、给图书表添加记录
- 执行SQL查询,插入表记录
INSERT INTO `index_book` VALUES (1, '445501', 'TP3/12', '数据库导论', '王文丹', '科学出版社', 17.90); INSERT INTO `index_book` VALUES (2, '445502', 'TP3/12', '数据库导论', '王文丹', '科学出版社', 17.90); INSERT INTO `index_book` VALUES (3, '445503', 'TP3/12', '数据库导论', '王文丹', '科学出版社', 17.90); INSERT INTO `index_book` VALUES (4, '445505', 'TW2/12', '电工基础', '楚留香', '机械工业出版社', 32.00); INSERT INTO `index_book` VALUES (5, '332211', 'TP5/10', '计算机基础', '李伟', '高等教育出版社', 18.00); INSERT INTO `index_book` VALUES (6, '112266', 'TP3/12', '安卓开发实践', '张慧明', '电子工业出版社', 55.00); INSERT INTO `index_book` VALUES (7, '225544', 'TP7/21', '高等数学', '李小刚', '高等教育出版社', 25.00); INSERT INTO `index_book` VALUES (8, '225533', 'TP7/12', '线性代数入门', '秦厚荣', '北京大学出版社', 25.00); INSERT INTO `index_book` VALUES (9, '113388', 'TR7/90', '大学英语', '杨琼', '北京外国语大学出版社', 30.00); INSERT INTO `index_book` VALUES (10, '446601', 'TR4/13', 'Java程序设计', '张凯文', '工信集团出版社', 40.00); INSERT INTO `index_book` VALUES (11, '446602', 'TR4/13', 'Java程序设计', '张凯文', '工信集团出版社', 40.00); INSERT INTO `index_book` VALUES (12, '446603', 'TR4/13', 'Java程序设计', '张凯文', '工信集团出版社', 40.00); INSERT INTO `index_book` VALUES (13, '449901', 'TR4/15', 'Spring Boot实践', '秦文举', '清华大学出版社', 50.00); INSERT INTO `index_book` VALUES (14, '449902', 'TR4/15', 'Spring Boot实践', '秦文举', '清华大学出版社', 50.00); INSERT INTO `index_book` VALUES (15, '118801', 'TR4/25', '计算机网络', '唐玉玲', '高等教育出版社', 32.00); INSERT INTO `index_book` VALUES (16, '118802', 'TR4/25', '计算机网络', '唐玉玲', '高等教育出版社', 32.00);
查看图书表
2、给用户表添加记录
- 执行SQL查询,添加表记录
INSERT INTO `index_user` VALUES (1, 'admin', '123456', '2021-05-05 11:14:29'); INSERT INTO `index_user` VALUES (2, '李晓红', '111111', '2021-05-21 11:14:58'); INSERT INTO `index_user` VALUES (3, '唐玉刚', '222222', '2021-05-10 11:15:42');
查看用户表
(十)创建模板页面
1、创建登录页面 - login.html
- 在templates文件夹里创建login.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>用户登录</title> </head> <body> <h3 style="text-align: center">用户登录</h3> <form id="frmLogin" action="do_login" method="post">{% csrf_token %}<table align="center" class="tb" border="1" cellpadding="10" ><tr><td align="center">账号</td><td><input id="username" type="text" name="username"/></td></tr><tr><td align="center">密码</td><td><input id="password" type="password" name="password"/></td></tr><tr align="center"><td colspan="2"><input type="submit" value="登录"/><input type="reset" value="重置"/></td></tr></table><script language="JavaScript">login_msg={{ data | safe }}if(login_msg!=null){alert(login_msg);}</script> </form> </body> </html>
2、创建图书显示页面 - books.html
- 在templates文件夹里创建books.html
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>显示图书信息</title> </head> <body><h3>显示图书信息</h3><table border="1" cellpadding="3"><tr><th>序号</th><th>总编号</th><th>分类号</th><th>书名</th><th>作者</th><th>出版单位</th><th>单价</th></tr>{% for book in books %}<tr><td width="50" align="center">{{ book.id }}</td><td width="100" align="center">{{ book.number }}</td><td width="100" align="center">{{ book.category }}</td><td width="300" align="center">{{ book.name }}</td><td width="100" align="center">{{ book.author }}</td><td width="300" align="center">{{ book.press }}</td><td width="100" align="center">{{ book.price }}</td></tr>{% endfor %}</table> </body> </html>
(十一)设置路由
1、创建子路由
- 在index目录里创建子路由urls.py,在里面创建子路由集合urlpatterns
from django.urls import path urlpatterns=[path('login',loginView,name='login'),path('do_login',dologinView,name='do_login'),path('books',booksView,name='books'), ]
- 三个视图函数都需要在index的views.py里创建,目前还没有创建,所以会报错,待会儿创建视图函数后,导入一下就可解决这个问题。
2、设置主路由
- 在主路由集合里添加一个路由:
path('', include(('index.urls', 'index'), namespace='index'))
(十二)创建视图函数
1、创建跳转到登录页面的视图函数 - loginView
3、创建处理登录请求的视图函数 - doLoginView
- 在index的views.py里创建doLoginView视图函数
import json from django.shortcuts import render,redirect# Create your views here. from index.models import Book,User#创建登录视图函数 def loginView(request):return render(request,'logoin.html')#创建处理登录请求的视图函数 def doLoginView(request):if request.method=='POST':username=request.POST.get('username')password=request.POST.get('password')user=User.objects.raw('select * from index_user where username = %s and password =%s',params=[username,password])if len(user)>0:return redirect('../books')else:login_msg=['用户名或密码错误']return render(request,'logoin.html',{'data':json.dumps(login_msg)}) #创建显示视图函数 def booksView(request):books=Book.objects.all()return render(request,'books.html',locals())
4、解决子路由中视图函数的导入问题
- 导入index.views里的三个视图函数
from django.urls import path from index.views import loginView,doLoginView,booksView urlpatterns=[path('login',loginView,name='login'),path('do_login',doLoginView,name='do_login'),path('books',booksView,name='books'), ]
(十三)启动项目,测试效果
- 访问
http://127.0.0.1:8000/login
,显示登录页面
输入错误的用户名或密码
单击【登录】按钮,弹出消息框提示用户
单击【确定按钮】,重新回到登录页面,输入正确的用户名和密码
单击【登录】按钮,表格显示全部图书信息
添加增删改查按钮
编写一个为增加图书的add.html页面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style type="text/css">h1{text-align: center;}table{margin: 20px auto;border: 1px cornflowerblue solid;width: 400px;height: 300px;}td{text-align: center;}span{font-size: 15px;}input{width: 100px;}.ip{padding-right: 30px;}.ip1{padding-right: 10px;}.ip2{width: 50px;height: 50px;border-radius: 15px;border: none;font-size: 20px;background: aqua;color:red;}.ip3{width: 50px;height: 50px;border-radius: 15px;border: none;font-size: 20px;color: aqua;background:red;}</style>
</head>
<body>
<table><h1>添加书籍信息</h1><form id="frmLogin" action="add" method="post"><tr><td class="ip1"><span>总编号:</span><input name="number" type="text"></td></tr><tr><td class="ip1"><span>分类号:</span><input name="category" type="text"></td></tr><tr><td><span>书名:</span><input name="name" type="text"></td></tr><tr><td><span>作者:</span><input name="author" type="text"></td></tr><tr><td class="ip"><span>出版单位:</span><input name="press" type="text"></td></tr><tr><td><span>单价:</span><input name="price" type="text"></td></tr><tr><td><input value="提交" type="submit" class="ip2"> <input value="重置" type="reset" class="ip3"></td></tr></form>
</table></body>
</html>
编写一个为增加图书的show.html页面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>修改主页面</title><style type="text/css">.cont{width: 100%;height: 400px;display: flex;flex-direction: column;justify-content: center;align-items: center;border: 1px red solid;position: relative;}.cont div{margin-top: 10px;}.cont span{font-size: 20px;margin-right: 10px;}.cont input{width: 250px;height: 45px;border-radius: 15px;text-align: center;}.cont_bu input{width: 80px;margin-left: 45%;cursor: pointer;}.cont_bu input:hover{background-color: palegreen;color: #FF00FF;}.cont_di{position: absolute;top: 200px;left: 200px;font-size: 25px;color:mediumspringgreen;}.</style>
</head>
<body>
<div class="cont"><div><h1>修改学生数据</h1></div><form action="{% url 'upday' %}" method="post" ><div><span>姓名:</span><input name="name" type="text" placeholder="请输入书名进行修改"></div><div><span>学号:</span><input name="number" type="text" placeholder="请输入修改总编号"></div><div><span>班级:</span><input name="category" type="text" placeholder="请输入修改你分类号"></div><div><span>性别:</span><input name="author" type="text" placeholder="请输入修改作者"></div><div><span>性别:</span><input name="press" type="text" placeholder="请输入修改出版社"></div><div></div><div class="cont_bu"><input value="提交" type="submit"></div></form>
</div></body>
</html>
【Django】图书管理相关推荐
- Django 图书管理
Django 图书管理 (一)创建Django项目 - books (二)创建并注册应用 - index 1.创建index应用 2.注册index应用 (三)创建数据库 - books (四)配置M ...
- python中型项目---Django框架---图书管理网站的制作-01
图书管理网站的制作详解(个人学习django框架的笔记) 第01号笔记最终成果图: 当前笔记所完成的网站的功能简介: 1 网页从数据库获得图书名称 2 点击新增按钮后增加一本书,当前名为"流 ...
- Django案例——图书管理案例
文章目录 项目开始前 App的建立和路由分配 数据库的建立与连接 模型映射(建立表格) 视图函数 最终的效果图 项目代码连接见:链接:https://pan.baidu.com/s/1mRYMVZkp ...
- 基于Django的图书管理系统设计与实现
全套资源下载地址:https://download.csdn.net/download/sheziqiong/86772475 全套资源下载地址:https://download.csdn.net/d ...
- 基于python的图书管理系统测试步骤_Django admin实现图书管理系统菜鸟级教程完整实例...
Django 有着强大而又及其易用的admin后台,在这里,你可以轻松实现复杂代码实现的功能,如搜索,筛选,分页,题目可编辑,多选框. 简单到,一行代码就可以实现一个功能,而且模块之间耦合得相当完美. ...
- iOS 开发 OC编程 数组冒泡排序.图书管理
// // main.m // oc -5 数组 // // Created by dllo on 15/10/28. // Copyright (c) 2015年 dllo. All rig ...
- Django站点管理、视图和URL(管理界面本地化、创建管理员、注册模型类、发布内容到数据库、定义视图、配置URLconf)
1.Django站点管理 站点: 分为内容发布和公共访问两部分 内容发布的部分由网站的管理员负责查看.添加.修改.删除数据 Django能够根据定义的模型类自动地生成管理模块 使用Django的管理模 ...
- 图书管理系统需求说明书
图书管理系统需求说明书 1引言................................................................. ...
- 【Python】解决Django Admin管理界面样式表(CSS Style)丢失问题
[Python]解决Django Admin管理界面样式表(CSS Style)丢失问题 参考文章: (1)[Python]解决Django Admin管理界面样式表(CSS Style)丢失问题 ( ...
- Django 权限管理-后台根据用户权限动态生成菜单
Django权限管理 实现目标: 1.管理用户,添加角色,用户关联角色 2.添加权限.角色关联权限 3.添加动作.权限关联动作 4.添加菜单.权限关联菜单 实现动态生成用户权限菜单(可设置多级菜单嵌套 ...
最新文章
- Mat,Iplimage,vector,vector_vector_Point2f等类型之间的相互转换
- python版本不同影响大不大_Python的不同版本对编程有影响吗
- windows 2003负载均衡故障切换
- 中国游戏公司研运一体发展专题分析2020
- 七步从AngularJS菜鸟到专家(6):服务
- 推荐系统:参数协同过滤
- php 支付宝支付回调与查询订单
- Rsync 实现远程同步
- 算法竞赛入门经典经典例题及习题题解
- ThingsBoard 开源技术体系总览
- POI操作Microsoft Office 之 操作PPT简单示例(附源码)
- 使用VBA实现Excel下拉多选
- 经纬度转换 gcj02转wgs84
- LeetCode 741. 摘樱桃 (网格DP)
- vue脚手架根据需要进行配置
- 交换机及IP地址(概念)
- android手机的根目录,安卓根目录详解
- 堕落了!经典软件下载网站被查
- 华为交换机dhcp获取不到_S7706交换机客户端无法通过DHCP获取地址问题
- 一款很好用的画图软件
热门文章
- SRPG游戏开发(五十三)第十一章 地图动作与地图事件 - 二 地图剧情(Map Plot)
- 趣图:万一跑路失败被抓,可以这样解释
- Intellij集成Vue开发环境
- 百慕大群岛计划发起区块链土地登记系统
- 计算机跨考英语口译,英语专业跨考
- mysql毕业生信息管理系统,本科毕业设计信息管理系统的设计(Struts,MySQL)
- 零基础如何成为自由插画师?
- Oracle使用dblink同步数据
- Vue2(十一):脚手架配置代理、github案例、插槽
- ​​氨基羧基化二氧化硅包覆核壳结构上转换纳米粒(808激发,蓝光,980激发,绿光)