当前位置:   article > 正文

python+Django学生管理系统_python+django学生信息管理系统

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中设置登录视图

  1. def login(request):
  2. if request.method == 'GET':
  3. return render(request, 'login.html')
  4. else:
  5. # 获取用户名和密码
  6. post_username = request.POST.get('username')
  7. post_password = request.POST.get('password')
  8. try:
  9. # 验证用户是否登录成功
  10. user_model = User.objects.get(username=post_username, password=post_password)
  11. # 将用户信息存在 session中
  12. request.session['user'] = post_username # {}
  13. print(user_model.username, user_model.password)
  14. return redirect('/app/student')
  15. except:
  16. return HttpResponse('用户名或密码错误')
  17. def logout(request):
  18. request.session.flush() # 清除当前登录用户的session数据
  19. return redirect('/app/login')

11.4 添加登录路由

11.5 创建登录页面html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <form action="" method="post">
  9. {% csrf_token %}
  10. <div class="item">
  11. <label for="">用户名:</label>
  12. <input type="text" name="username">
  13. </div>
  14. <div class="item">
  15. <label for="">密码:</label>
  16. <input type="password" name="password">
  17. </div>
  18. <div class="item">
  19. <input type="submit" value="登录">
  20. </div>
  21. </form>
  22. </body>
  23. </html>

在终端中运行manage文件

在浏览器中输入ip和端口号和路由进入登录页面

12 创建学生管理主页面

首先创建一个通用模板

12.1 创建student页面

继承layout.html内容(这里只是为大家简单展示一下继承的用法)

  1. {% extends 'layout.html' %}
  2. {% block main %}
  3. <a href="/app/book_add">增加学生</a>
  4. <table>
  5. <thead>
  6. <tr>
  7. <th>姓名</th>
  8. <th>年龄</th>
  9. <th>性别</th>
  10. </tr>
  11. </thead>
  12. <tbody>
  13. {% for item in ls %}
  14. <tr>
  15. <td>{{ item.name }}</td>
  16. <td>{{ item.age }}</td>
  17. <td>{{ item.sex }}</td>
  18. </tr>
  19. {% endfor %}
  20. </tbody>
  21. </table>
  22. {% endblock %}

 12.2 创建views中student函数

  1. def student(request):
  2. ls = Student.objects.all()
  3. return render(request,'student.html',{'ls':ls})

12.3 添加路由

登录完成后就会跳转到student页面

13 添加增加学生功能

13.1 创建添加学生页面

  1. {% extends 'layout.html' %}
  2. {% block main %}
  3. <form method="POST">
  4. {% csrf_token %}
  5. <p>学生姓名<input type="text" name="name"></p>
  6. <p>学生性别
  7. <input type="radio" name="sex" value="0">
  8. <input type="radio" name="sex" value="1">
  9. </p>
  10. <p>学生年龄<input type="text" name="age"></p>
  11. <p><button>添加</button></p>
  12. </form>
  13. {% endblock %}

13.2 在view中创建添加函数

  1. def add(request):
  2. if request.method == 'GET':
  3. return render(request,'add.html')
  4. else:
  5. name = request.POST.get('name')
  6. sex = request.POST.get('sex')
  7. age = request.POST.get('age')
  8. Student.objects.create(name = name,sex=sex,age=age)
  9. return redirect('/app/student')

 13.3添加路由

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

 

14. 修改功能

14.1创建修改学生页面

  1. {% extends 'layout.html' %}
  2. {% block main %}
  3. <form method="POST">
  4. {% csrf_token %}
  5. <p>学生姓名<input type="text" name="name"></p>
  6. <p>学生性别
  7. <input type="radio" name="sex" value="0">
  8. <input type="radio" name="sex" value="1">
  9. </p>
  10. <p>学生年龄<input type="text" name="age"></p>
  11. <p><button>修改</button></p>
  12. </form>
  13. {% endblock %}

 14.2 在view中创建添加函数

  1. def update(request):
  2. id = request.GET.get('id')
  3. if request.method == 'GET':
  4. ls = Student.objects.get(id = id)
  5. return render(request,'update.html',{
  6. 'ls':ls
  7. })
  8. else:
  9. name = request.POST.get('name')
  10. age = request.POST.get('age')
  11. sex = request.POST.get('sex')
  12. Student.objects.filter(id=id).update(
  13. name = name,
  14. age = age,
  15. sex = sex
  16. )
  17. return redirect('/app/student')

 14.3添加路由

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

15.  删除功能

 15.1 在view中创建删除函数

  1. def delete(request):
  2. id = request.GET.get('id')
  3. Student.objects.filter(id=id).delete()
  4. return redirect('/app/student')

  15.2 添加路由

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

 

16. views.py中的代码

下面是views.py中的所有代码

  1. from django.http import HttpResponse
  2. from django.shortcuts import render, redirect
  3. # Create your views here.
  4. from app.models import Student, User
  5. def student(request):
  6. ls = Student.objects.all()
  7. return render(request,'student.html',{'ls':ls})
  8. def add(request):
  9. if request.method == 'GET':
  10. return render(request,'add.html')
  11. else:
  12. name = request.POST.get('name')
  13. sex = request.POST.get('sex')
  14. age = request.POST.get('age')
  15. Student.objects.create(name = name,sex=sex,age=age)
  16. return redirect('/app/student')
  17. def delete(request):
  18. id = request.GET.get('id')
  19. Student.objects.filter(id=id).delete()
  20. return redirect('/app/student')
  21. def update(request):
  22. id = request.GET.get('id')
  23. if request.method == 'GET':
  24. ls = Student.objects.get(id = id)
  25. return render(request,'update.html',{
  26. 'ls':ls
  27. })
  28. else:
  29. name = request.POST.get('name')
  30. age = request.POST.get('age')
  31. sex = request.POST.get('sex')
  32. Student.objects.filter(id=id).update(
  33. name = name,
  34. age = age,
  35. sex = sex
  36. )
  37. return redirect('/app/student')
  38. def login(request):
  39. if request.method == 'GET':
  40. return render(request, 'login.html')
  41. else:
  42. # 获取用户名和密码
  43. post_username = request.POST.get('username')
  44. post_password = request.POST.get('password')
  45. try:
  46. # 验证用户是否登录成功
  47. user_model = User.objects.get(username=post_username, password=post_password)
  48. # 将用户信息存在 session中
  49. request.session['user'] = post_username # {}
  50. print(user_model.username, user_model.password)
  51. return redirect('/app/student')
  52. except:
  53. return HttpResponse('用户名或密码错误')
  54. def logout(request):
  55. request.session.flush() # 清除当前登录用户的session数据
  56. return redirect('/app/login')

17. student.html中的代码

下面是student.html中的代码

  1. {% extends 'layout.html' %}
  2. {% block main %}
  3. <a href="/app/add">增加学生</a>
  4. <table>
  5. <thead>
  6. <tr>
  7. <th>姓名</th>
  8. <th>年龄</th>
  9. <th>性别</th>
  10. <th>操作</th>
  11. </tr>
  12. </thead>
  13. <tbody>
  14. {% for item in ls %}
  15. <tr>
  16. <td>{{ item.name }}</td>
  17. <td>{{ item.age }}</td>
  18. <td>
  19. {% if item.sex == '1' %}
  20. {% else %}
  21. {% endif %}
  22. </td>
  23. <td><a href="/app/delete?id={{item.id}}">删除</a></td>
  24. <td><a href="/app/update?id={{item.id}}">修改</a></td>
  25. </tr>
  26. {% endfor %}
  27. </tbody>
  28. </table>
  29. {% endblock %}

总结

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

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号