目录
(一)创建Django项目 - books
- 创建Django项目,设置项目位置与项目名
(二)创建并注册应用 - index
1、创建index应用
- 在项目配置文件里,导入os模块
- 在控制台执行
python manage.py startapp index
- 启动项目,访问
http://127.0.0.1:8000
2、注册index应用
- 在配置文件的INSTALLED_APPS列表里添加index应用
(三)创建数据库 - books
- 创建MySQL数据库 - books
(四)配置MySQL数据库连接信息
- 在settings.py文件里配置MySQL数据库连接信息
(五)设置MySQL数据库连接模块
- 在books的
__init__.py
文件里设置数据库连接模块
(六)实现数据迁移生成表
- 依次执行下述两条命令
-
python manage.py makemigrations
- python manage.py migrate
- 最后再查看一下数据库生成表
(七)创建模型
1、创建图书模型 - Book
- 在index的models.py文件里定义Book模型类
#创建图书模型
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)
2、创建用户模型 - User
#创建用户模型
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)
(八)数据迁移,生成图书表与用户表
- 依次执行下面两条命令
- python manage.py migrate
- python manage.py migrate index 0001_initial
- 在数据库查看生成的两个表
(九)给图书表与用户表添加记录
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查询,添加表记录
- 刷新用户表查看数据
(十)创建模板页面
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 class="tb" border="1" cellpadding="10" style=" margin: 0 auto">
<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>
(十一)设置路由
1、创建子路由
- 在index目录里创建子路由urls.py,在里面创建子路由集合urlpatterns
- 三个视图函数都需要在index的views.py里创建,目前还没有创建,所以会报错,创建视图函数后,导入就可解决问题
2、设置主路由
- 在主路由集合里添加一个路由:
path('', include(('index.urls', 'index'), namespace='index'))
(十二)创建视图函数
1、创建跳转到登录页面的视图函数 - loginView
- 在index的views.py里创建loginView的视图函数
3、创建处理登录请求的视图函数 - doLoginView
- 在index的views.py里创建doLoginView的视图函数
import json
from django.shortcuts import render, redirect
#创建登录视图函数
from index.models import User, Book
def loginView(request):
return render(request, 'login.html')
#创建处理登录请求的视图函数
def doLoginView(request):
#判断请求方式
if request.method == 'POST':
#获取登录表单提交的数据
username = request.POST.get('username')
password = request.POST.get('password')
#利用用户模型查询
users = User.objects.raw('select * from index_user where username =%s and password =%s', params=[username, password])
#判断用户是否登录成功
if len(users) > 0:
return redirect('../books')
else:
login_msg = ['用户名或者密码错误']
return render(request,'login.html',{'data': json.dumps(login_msg)})
def booksView(request):
books = Book.objects.all()
return render(request,'books.html',locals())
# Create your views here.
4、解决子路由中视图函数的导入问题
- 导入index.views里的三个视图函数
(十三)启动项目,测试效果
- 访问
http://127.0.0.1:8000/login
,显示登录页面
- 输入错误的用户名或密码
- 输入正确的用户名和密码
- 登陆后表格显示全部图书信息