写点什么

【Django | 增删改查】学生管理系统案例

  • 2022 年 8 月 28 日
    广东
  • 本文字数:6237 字

    阅读完需:约 20 分钟


🤵‍♂️ 个人主页: @计算机魔术师👨‍💻 作者简介:CSDN 内容合伙人,全栈领域优质创作者。🌐 推荐一款找工作神器网站: 宝藏网站 |笔试题库|面试经验|实习招聘内推|


该文章收录专栏---【Django | 项目开发】从入门到上线 专栏---


@[TOC](🎏 Django 应用搭建运行)

建立 myapp 应用

我们假设你已经创建好了项目demo


快捷键 windows + R 输入 cmd 进入任务管理器 cmd 中用 cd (后面加绝对路径,或者是当前的绝对路径)进入之前创建的 demo 目录下后,在 cmd 输入(最后的 myapp 是自定义命名的)


python manage.py startapp myapp
复制代码



在 myapp 文件有如下文件:



  • 这里各个文件含义是


init.py:告诉系统这是一个 python package

admin:可以在里面自定义 django 的管理项目,增加用户,设置管理页面

apps.py:对应用的配置

models.py:建立模型,一个模型对应一张表,数据迁移后会在数据库中出现所建立的类,

views.py:视图函数,用于接受 url 的请求,并对之相应,例如点击登录按钮,跳转到登录页面等

text.py:编写测试文件对应用进行测试

一、进入 setting 进行项目配置


当前是在 setting.py 目录下 (这里我们数据库不用配置,默认使用 django 自带的数据库 sqlite3)


重点:引入你的应用,同样在 setting 文件中找到 INSTALLED_APPS,在末尾添加你应用的名称:(这一点非常重要!不然后面的数据无法迁移)


INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'myapp.apps.MyappConfig', #也可以直接为myapp,就是你的应用名]
复制代码


在 myapp 文件中建立 urls.py 文件



并在 demo 根目录下的 url.py 中输入如下代码


from django.contrib import admin  #django自带的admin管理from django.urls import path, include urlpatterns = [    path('admin/', admin.site.urls),    path('', include('myapp.urls'))  #引入myapp的url.py文件]
复制代码


如图:


二、模型创建,数据迁移

  • 首先建立自己的模型


在 myapp 目录下进入 model.py 我这里建立一个学生成绩管理的模型


from django.db import models
# Create your models here.#这里我们设置学生的属性(学号、名字、学院、专业、成绩)class Users(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=20) age = models.IntegerField(default=18) college = models.CharField(max_length=30) major = models.CharField(max_length=30) grade = models.IntegerField()

class Meta: #必须要在类里的在定义类才能改表名 db_table = 'users' #这里我们设置我们的表名为users
复制代码


如图:



其中一个模型对应一张表,然后任务管理器下,进行数据迁移,


python manage.py makemigrations
复制代码


结束后会在 myapp 的迁移文件 makemigration 文件目录出现如图文件:



python manage.py migrate
复制代码


效果如图:



可以看到这里 django 在数据库中建立如上表格,其中大部分都是 auth 就是 django 自带的用户登录注册功能


  • 进入 python shell 中检查数据,效果如图:



我们从 myapp.models 文件中引入我们创建的类 Users,创建了第一个数据,测试成功!

进行 MVT 配置

一、配置 URL 文件

接下来我们配置 myapp 的 URL 配置,也就是设置页面跳转,和视图函数进行增删改查,进入 myapp 目录下的 urls.py 文件输入:


from django.urls import pathfrom . import viewsapp_name = 'myapp' #设置改目录文件名为myapp,这样在大项目中# 面对多项应用url中可避免对名字反定向出现重名,读者应该养成这个习惯
urlpatterns = [ path('', views.home, name='home'), #首页面 path('read/', views.read, name='read'), #浏览信息 path('add/', views.add, name='add'), #添加信息 path('delete/<int:sid>/', views.dele, name='dele'), #删除信息 path('edit/<int:sid>/', views.edit, name='edit'), #修改信息
]
复制代码

二、定义视图函数

到 myapp 中 views.py 文件中输入:


from django.shortcuts import renderfrom myapp.models import Users  #引入我们定义的学生类# Create your views here.
#主页面def home(request): return render(request, 'myapp/home.html') #render是渲染的意思,返回一个页面
#查看信息def read(request): stu = Users.objects.all() context = {'stu': stu} #作为一个字典丢到read.html的页面中 return render(request, 'myapp/read.html', context)
#添加信息:def add(request): #这里的原理是,在read页面中点击添加信息按钮, # 跳转是requesr中get方法,会首先跳到add.html表单中, # 在表单输入值reqeust请求方式为post 也就是进行添加操作。 if request.method == "POST": try: stu = Users() stu.name = request.POST['name'] stu.age = request.POST['age'] stu.college = request.POST['college'] stu.major = request.POST['major'] stu.grade = request.POST['grade'] stu.save() return render(request, 'myapp/info.html', {"info": "添加成功!"}) except: return render(request, 'myapp/info.html', {"info": "添加失败!"}) else: return render(request, 'myapp/add.html') #返回
#修改信息def edit(request, sid): if request.method == "POST": try: ob = Users.objects.get(id=sid) ob.name = request.POST['name'] ob.age = request.POST['age'] ob.college = request.POST['college'] ob.major = request.POST['major'] ob.grade = request.POST['grade'] ob.save() return render(request, 'myapp/info.html', {"info": "修改成功!"}) except: return render(request, 'myapp/info.html', {"info": "修改失败!"}) else: stu = Users.objects.get(id=sid) context = {'sid': stu} return render(request, 'myapp/edit.html', context)

#删除数据def dele(request, sid): try: stu = Users.objects.get(id=sid) stu.delete() return render(request, 'myapp/info.html', {"info": "删除成功"}) except: return render(request, 'myapp/info.html', {"info": "删除失败"})
复制代码


现在我们成功建立了视图函数和 URL 配置,但是我们要让他在页面中显示出来,所以需要配置我们的 Templates 也就是模板层,相当于显示网页页面


我们进入到 demo 项目文件中 setting.py 中找到 TEMPLATES, 修改如下

三、建立模板层(页面显示)

TEMPLATES = [    {        'BACKEND': 'django.template.backends.django.DjangoTemplates',        'DIRS': [Path(BASE_DIR, 'templates')], #修改这一行        'APP_DIRS': True,        'OPTIONS': {            'context_processors': [                'django.template.context_processors.debug',                'django.template.context_processors.request',                'django.contrib.auth.context_processors.auth',                'django.contrib.messages.context_processors.messages',            ],        },    },]
复制代码


接下来我们在 demo 总文件下建立 templates 文件,并在 templates 文件下在建立 myapp 文件效果如图:



接着我们需要创建我们的页面文件:


🎏 add.html #用于添加信息🎏 edit.html #用于修改信息🎏 home.html #主页面🎏 info.html #提示修改成功和失败的页面🎏 menu.html #导航文件,相当于一个网页中的分栏🎏 read.html #浏览信息页面


  • home.html 我们放入如下代码:


<!DOCTYPE html><html lang="zh-hans"><head>    <meta charset="UTF-8">    <title>学生管理系统</title></head><body>    <center>        <h2>欢迎来到学生管理系统</h2>        <br/>        <a href="{% url 'myapp:read' %}">查看信息</a>        <p>开开心心上学去,</p>        <p>平平安安回家来。</p>
</center></body></html>
复制代码


  • read.html:


<!DOCTYPE html><html lang="zh-hans"><head>    <meta charset="UTF-8">    <title>学生管理系统</title></head><body>    <center>
{% include "myapp/menu.html" %}
<table border="1" width="700">
<tr> <th>name</th> <th>age</th> <th>college</th> <th>major</th> <th>grade</th> <th>operate</th> </tr> {% for s in stu %} <tr> <td>{{ s.name }}</td> <td>{{ s.age }}</td> <td>{{ s.college }}</td> <td>{{ s.major }}</td> <td>{{ s.grade }}</td> <td> <a href="{% url 'myapp:edit' s.id %}">修改</a> <a href="{% url 'myapp:dele' s.id %}">删除</a> </td> </tr> {% endfor %} </table> </center></body></html>
复制代码


  • edit.html :


<!DOCTYPE html><html lang="zh-hans"><head>    <meta charset="UTF-8">    <title>学生管理系统</title></head><body>    <center>        <h1>修改学生信息</h1>        <a href="{% url 'myapp:read' %}">返回</a>        <table>            <form action="{% url 'myapp:edit' sid.id %}" method="post">                {% csrf_token %}<!--在django的csrf表单安全保护中使用表单-->            <tr>        <!--都需要添加这个哦-->                <td>                    name:                </td>                <td>                    <input type="text" name="name", value="{{ sid.name }}">                </td>            </tr>            <tr>                <td>                     age:                </td>                <td>                    <input type="text" name="age", value="{{ sid.age }}" >                </td>            </tr>                <tr>                <td>                    college:                </td>                <td>                    <input type="text" name="college", value="{{ sid.college }}" >                </td>            </tr>                <tr>                <td>                    major:                </td>                <td>                    <input type="text" name="major" value="{{ sid.major }}">                </td>            </tr>                <tr>                <td>                    grade:                </td>                <td>                    <input type="text" name="grade" value="{{ sid.grade }}">                </td>            </tr>            <tr>                <td align="center" colspan="2">                    <input type="submit" value="修改">                    <input type="reset" value="重置">                </td>            </tr>            </form>        </table>    </center></body></html>
复制代码


  • info.html:


<!DOCTYPE html><html lang="zh-hans"><head>    <meta charset="UTF-8">    <title>学生管理系统</title></head><body>    <center>
{% include "myapp/menu.html" %} {{ info }} </center></body></html>
复制代码


  • menu.html:


<!doctype html><html><head>    <meta charset="UTF-8">    <meta name="viewport"          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">    <meta http-equiv="X-UA-Compatible" content="ie=edge">    <title>学生管理系统</title></head><body>        <center>            <h1>学生管理导航</h1>
<a href="{% url 'myapp:read' %}">信息浏览</a>| <a href="{% url 'myapp:add' %}">添加信息</a> <hr/> </center>
</body></html>
复制代码


  • add.html:


<!DOCTYPE html><html lang="zh-hans"><head>    <meta charset="UTF-8">    <title>学生管理系统</title></head><body>    <center>        <h1>添加学生信息</h1>        <a href="{% url 'myapp:read' %}">返回</a>        <table>            <form action="{% url 'myapp:add' %}" method="post">               {% csrf_token %} <!--在django的csrf表单安全保护中使用表单-->            <tr>        <!--都需要添加这个哦-->                <td>                    name:                </td>                <td>                    <input type="text" name="name">                </td>            </tr>            <tr>                <td>                     age:                </td>                <td>                    <input type="text" name="age" >                </td>            </tr>                <tr>                <td>                    college:                </td>                <td>                    <input type="text" name="college" >                </td>            </tr>                <tr>                <td>                    major:                </td>                <td>                    <input type="text" name="major" >                </td>            </tr>                <tr>                <td>                    grade:                </td>                <td>                    <input type="text" name="grade" >                </td>            </tr>            <tr>                <td align="center" colspan="2">                    <input type="submit" value="添加">                    <input type="reset" value="重置">                </td>            </tr>            </form>        </table>    </center></body></html>
复制代码


🥳大功告成!!现在我们可以运行我们的网页了


python manage.py runserver
复制代码

四、项目运行效果!

  • home.html ,首页效果如图:



  • read.html,浏览页面如图:



  • add.html 添加页面如图:



  • edit.html,修改页面如图:



  • dele.html,删除页面如图:



              🤞到这里,如果还有什么疑问🤞    🎩欢迎私信博主问题哦,博主会尽自己能力为你解答疑惑的!🎩      🥳如果对你有帮助,你的赞是对博主最大的支持!!🥳
复制代码


用户头像

还未添加个人签名 2022.08.13 加入

还未添加个人简介

评论

发布
暂无评论
【Django | 增删改查】学生管理系统案例_8月月更_计算机魔术师_InfoQ写作社区