目录
目录
1.创建文件夹
首先要先启动mysql
创建一个新的文件夹用来存放其中内容
2.创建项目
鼠标右击打开终端
在终端中输入
django-admin startproject aaa
创建一个名为aaa的项目文件
3.进行调试
打开pycharm进行调试
打开pycharm,打开学生管理系统文件
从左上角打开,然后进行编辑配置
添加新的运行配置,选择python
输入runsever,点击确定
4.创建应用app
在项目aaa中进入终端,输入
python manage.py startapp app
5.创建一个新的数据库 student
6.创建templates文件夹存放html文件
7.在app中的models文件中添加表
以表名创建一个类,类名遵循大驼峰命名法;实例方法表示表中的字段名;
7.1 orm字段类型
- 表示文本的字段类型
- CharField、TextField——字符串、文本
- 数字(整数)
- IntegerField——整数
- SmallIntegerField——整数
- BigIntegerField——整数
- 数字(小数)
- FloatField、DecimalField——小数
- 日期与时间
- DateField——日期
- TimeField——时间
- DateTimeField——日期时间
- 特殊类型
- OneToOneField——一对一关联
- ForeignKey——外键关联
- ManyToManyField——多对多关联
max_length指定最大长度
Student是学生系统表
User是后面登录用的表,用来储存用户和密码
8.配置setting文件
导入os模板
找到 INSTALLED_APPS(在34行左右) 添加app应用
在 TEMPLATES中的DIRS中添加
os.path.join(BASE_DIR,'templates')
配置DATABASES 连接数据库:
参数说明:
- default——默认的数据库,可配置多个数据,使用名称来区分,也就是说,可以配置多个数据库连接信息的
- ENGINE——数据库引擎
- NAME——数据库名称
- USER——数据库登录用户名
- PASSWORD——数据库登录密码
- HOST——数据库访问地址
- PORT——数据库访问端口
由于这次并没有使用静态所以就没有配置静态资源
9. 将模板储存在app中
首先在app中创建一个url路由文件
路由转发
分配url
10.数据迁移
python manage.py makemigrations
python manage.py migrate
使用这两条命令进行数据迁移,迁移完成后会出现一个migrations中会出现一个新文件可以在文件夹中查看数据是否迁移成功
11.实现登录
11.0 创建中间件middieware
创建login.html登录页面(如果页面运行的时候出现重定向次数过多要在第二个app/login后加/)
11.1 配置setting
写完中间件后要在setting中进行配置,将下面的代码添加到MIDDLEWARE中
'middleware.auth.AuthMiddleware'
11.2设置用户名和密码
在user表中设置用户名和密码
点右下角对勾保存;
11.3在views中设置登录视图
def login(request):
if request.method == 'GET':
return render(request, 'login.html')
else:
# 获取用户名和密码
post_username = request.POST.get('username')
post_password = request.POST.get('password')
try:
# 验证用户是否登录成功
user_model = User.objects.get(username=post_username, password=post_password)
# 将用户信息存在 session中
request.session['user'] = post_username # {}
print(user_model.username, user_model.password)
return redirect('/app/student')
except:
return HttpResponse('用户名或密码错误')
def logout(request):
request.session.flush() # 清除当前登录用户的session数据
return redirect('/app/login')
11.4 添加登录路由
11.5 创建登录页面html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="post">
{% csrf_token %}
<div class="item">
<label for="">用户名:</label>
<input type="text" name="username">
</div>
<div class="item">
<label for="">密码:</label>
<input type="password" name="password">
</div>
<div class="item">
<input type="submit" value="登录">
</div>
</form>
</body>
</html>
在终端中运行manage文件
在浏览器中输入ip和端口号和路由进入登录页面
12 创建学生管理主页面
首先创建一个通用模板
12.1 创建student页面
继承layout.html内容(这里只是为大家简单展示一下继承的用法)
{% extends 'layout.html' %}
{% block main %}
<a href="/app/book_add">增加学生</a>
<table>
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
</tr>
</thead>
<tbody>
{% for item in ls %}
<tr>
<td>{{ item.name }}</td>
<td>{{ item.age }}</td>
<td>{{ item.sex }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
12.2 创建views中student函数
def student(request):
ls = Student.objects.all()
return render(request,'student.html',{'ls':ls})
12.3 添加路由
登录完成后就会跳转到student页面
13 添加增加学生功能
13.1 创建添加学生页面
{% extends 'layout.html' %}
{% block main %}
<form method="POST">
{% csrf_token %}
<p>学生姓名<input type="text" name="name"></p>
<p>学生性别
<input type="radio" name="sex" value="0">男
<input type="radio" name="sex" value="1">女
</p>
<p>学生年龄<input type="text" name="age"></p>
<p><button>添加</button></p>
</form>
{% endblock %}
13.2 在view中创建添加函数
def add(request):
if request.method == 'GET':
return render(request,'add.html')
else:
name = request.POST.get('name')
sex = request.POST.get('sex')
age = request.POST.get('age')
Student.objects.create(name = name,sex=sex,age=age)
return redirect('/app/student')
13.3添加路由
13.4在student.html中创建添加学生链接
14. 修改功能
14.1创建修改学生页面
{% extends 'layout.html' %}
{% block main %}
<form method="POST">
{% csrf_token %}
<p>学生姓名<input type="text" name="name"></p>
<p>学生性别
<input type="radio" name="sex" value="0">男
<input type="radio" name="sex" value="1">女
</p>
<p>学生年龄<input type="text" name="age"></p>
<p><button>修改</button></p>
</form>
{% endblock %}
14.2 在view中创建添加函数
def update(request):
id = request.GET.get('id')
if request.method == 'GET':
ls = Student.objects.get(id = id)
return render(request,'update.html',{
'ls':ls
})
else:
name = request.POST.get('name')
age = request.POST.get('age')
sex = request.POST.get('sex')
Student.objects.filter(id=id).update(
name = name,
age = age,
sex = sex
)
return redirect('/app/student')
14.3添加路由
14.4在student.html中创建修改链接
15. 删除功能
15.1 在view中创建删除函数
def delete(request):
id = request.GET.get('id')
Student.objects.filter(id=id).delete()
return redirect('/app/student')
15.2 添加路由
15.3 在student.html中创建删除链接
16. views.py中的代码
下面是views.py中的所有代码
from django.http import HttpResponse
from django.shortcuts import render, redirect
# Create your views here.
from app.models import Student, User
def student(request):
ls = Student.objects.all()
return render(request,'student.html',{'ls':ls})
def add(request):
if request.method == 'GET':
return render(request,'add.html')
else:
name = request.POST.get('name')
sex = request.POST.get('sex')
age = request.POST.get('age')
Student.objects.create(name = name,sex=sex,age=age)
return redirect('/app/student')
def delete(request):
id = request.GET.get('id')
Student.objects.filter(id=id).delete()
return redirect('/app/student')
def update(request):
id = request.GET.get('id')
if request.method == 'GET':
ls = Student.objects.get(id = id)
return render(request,'update.html',{
'ls':ls
})
else:
name = request.POST.get('name')
age = request.POST.get('age')
sex = request.POST.get('sex')
Student.objects.filter(id=id).update(
name = name,
age = age,
sex = sex
)
return redirect('/app/student')
def login(request):
if request.method == 'GET':
return render(request, 'login.html')
else:
# 获取用户名和密码
post_username = request.POST.get('username')
post_password = request.POST.get('password')
try:
# 验证用户是否登录成功
user_model = User.objects.get(username=post_username, password=post_password)
# 将用户信息存在 session中
request.session['user'] = post_username # {}
print(user_model.username, user_model.password)
return redirect('/app/student')
except:
return HttpResponse('用户名或密码错误')
def logout(request):
request.session.flush() # 清除当前登录用户的session数据
return redirect('/app/login')
17. student.html中的代码
下面是student.html中的代码
{% extends 'layout.html' %}
{% block main %}
<a href="/app/add">增加学生</a>
<table>
<thead>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{% for item in ls %}
<tr>
<td>{{ item.name }}</td>
<td>{{ item.age }}</td>
<td>
{% if item.sex == '1' %}
女
{% else %}
男
{% endif %}
</td>
<td><a href="/app/delete?id={{item.id}}">删除</a></td>
<td><a href="/app/update?id={{item.id}}">修改</a></td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock %}
总结
提示:以上就是本文是全部内容