python+Django学生管理系统

目录

目录

1.创建文件夹

2.创建项目

3.进行调试

4.创建应用app

5.创建一个新的数据库 student

6.创建templates文件夹存放html文件

7.在app中的models文件中添加表

7.1 orm字段类型

8.配置setting文件

​编辑

9. 将模板储存在app中

​编辑

10.数据迁移

11.实现登录

11.0 创建中间件middieware

11.1 配置setting

 11.2设置用户名和密码

11.3在views中设置登录视图

11.4 添加登录路由

11.5 创建登录页面html

12 创建学生管理主页面

12.1 创建student页面

13 添加增加学生功能

13.1 创建添加学生页面

13.2 在view中创建添加函数

 13.3添加路由

13.4在student.html中创建添加学生链接

 ​编辑

14. 修改功能

14.1创建修改学生页面

 14.2 在view中创建添加函数

 14.3添加路由

 14.4在student.html中创建修改链接

​编辑

15.  删除功能

 15.1 在view中创建删除函数

  15.2 添加路由

  15.3 在student.html中创建删除链接

​编辑

16. views.py中的代码

17. student.html中的代码

总结



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字段类型

  1. 表示文本的字段类型
    • CharField、TextField——字符串、文本
  2. 数字(整数)
    • IntegerField——整数
    • SmallIntegerField——整数
    • BigIntegerField——整数
  3. 数字(小数)
    • FloatField、DecimalField——小数
  4. 日期与时间
    • DateField——日期
    • TimeField——时间
    • DateTimeField——日期时间
  5. 特殊类型
    • OneToOneField——一对一关联
    • ForeignKey——外键关联
    • ManyToManyField——多对多关联

max_length指定最大长度

Student是学生系统表

User是后面登录用的表,用来储存用户和密码

8.配置setting文件

导入os模板

找到 INSTALLED_APPS(在34行左右) 添加app应用

在 TEMPLATES中的DIRS中添加

os.path.join(BASE_DIR,'templates')

配置DATABASES 连接数据库:

参数说明:

  1. default——默认的数据库,可配置多个数据,使用名称来区分,也就是说,可以配置多个数据库连接信息的
  2. ENGINE——数据库引擎
  3. NAME——数据库名称
  4. USER——数据库登录用户名
  5. PASSWORD——数据库登录密码
  6. HOST——数据库访问地址
  7. 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 %}

总结

提示:以上就是本文是全部内容

  • 6
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值