python+django+sql学生信息管理后台开发

yizhihongxing

“Python+Django+SQL学生信息管理后台开发”是一项非常实用的项目,可以帮助学校、教育机构、学院等管理学生的个人信息和学习成绩。下面是完整攻略及示例说明:

1. 确定项目需求

在开始项目前,首先需要确定项目的需求,明确项目要解决的问题。例如,要开发一个学生信息管理后台,需要实现的功能包括:

  • 学生信息的录入、修改和删除
  • 学生信息的查询功能
  • 学生成绩的录入和查询功能
  • 班级、学院等基础信息的管理功能等

2. 搭建开发环境

接下来需要搭建Python、Django和MySQL等开发环境。安装好必要的软件后,创建一个Django项目,命名为StudentManage,进入到该项目的目录下。

3. 数据库设计

根据需求设计数据库模型。在MySQL中创建一个名为student_management的数据库,然后创建students、grades和classes三张数据表,分别表示学生信息、成绩和班级信息。具体的表结构如下:

students表结构

字段名 数据类型 说明
id 整数 学生学号,主键
name 字符串 学生姓名
gender 字符串 学生性别
age 整数 学生年龄
email 字符串 学生电子邮件地址
class_id 整数 学生所在的班级id,外键

grades表结构

字段名 数据类型 说明
id 整数 成绩id,主键
math 整数 数学成绩
chinese 整数 语文成绩
english 整数 英语成绩
student_id 整数 学生学号,外键

classes表结构

字段名 数据类型 说明
id 整数 班级id,主键
name 字符串 班级名称
major 字符串 所属专业

4. 编写代码

数据库配置

在StudentManage/StudentManage/settings.py中进行数据库的配置,修改数据库相关信息如下:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'student_management',
        'USER': 'root',
        'PASSWORD': '', 
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

创建模型

在models.py文件中定义学生信息、成绩和班级三个模型类,代码如下:

from django.db import models

class Class(models.Model):    
    name = models.CharField(max_length=30)
    major = models.CharField(max_length=50)

class Student(models.Model):
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=30)
    gender = models.CharField(max_length=10)
    age = models.IntegerField()
    email = models.EmailField()
    class_id = models.ForeignKey(Class, on_delete=models.CASCADE)

class Grade(models.Model):
    id = models.AutoField(primary_key=True)
    math = models.IntegerField()
    chinese = models.IntegerField()
    english = models.IntegerField()
    student_id = models.ForeignKey(Student, on_delete=models.CASCADE)

创建视图

在views.py文件中创建添加、修改、查询等视图函数,具体代码如下指南和示例:

添加学生信息

from django.shortcuts import render
from django.http import HttpResponse
from .models import Student

def add_student(request):
    if request.method == 'POST':
        id = request.POST.get('id')
        name = request.POST.get('name')
        gender = request.POST.get('gender')
        age = request.POST.get('age')
        email = request.POST.get('email')
        class_id = request.POST.get('class_id')
        Student.objects.create(id=id, name=name, gender=gender, age=age, email=email, class_id=class_id)
        return HttpResponse('添加成功')
    return render(request, 'add_student.html')

修改学生信息

from django.shortcuts import render
from django.http import HttpResponse
from .models import Student

def update_student(request):
    if request.method == 'POST':
        id = request.POST.get('id')
        name = request.POST.get('name')
        gender = request.POST.get('gender')
        age = request.POST.get('age')
        email = request.POST.get('email')
        class_id = request.POST.get('class_id')
        Student.objects.filter(id=id).update(name=name, gender=gender, age=age, email=email, class_id=class_id)
        return HttpResponse('修改成功')
    return render(request, 'update_student.html')

查询学生信息

from django.shortcuts import render
from django.http import HttpResponse
from .models import Student

def search_student(request):
    students = []
    if request.method == 'POST':
        id = request.POST.get('id')
        name = request.POST.get('name')
        gender = request.POST.get('gender')
        age = request.POST.get('age')
        email = request.POST.get('email')
        class_id = request.POST.get('class_id')
        if id:
            students = Student.objects.filter(id=id)
        elif name:
            students = Student.objects.filter(name=name)
        elif gender:
            students = Student.objects.filter(gender=gender)
        elif age:
            students = Student.objects.filter(age=age)
        elif email:
            students = Student.objects.filter(email=email)
        elif class_id:
            students = Student.objects.filter(class_id=class_id)
    return render(request, 'search_student.html', {'students': students})

创建模板

在templates目录下创建HTML模板文件,实现表单提交和数据展示等功能。具体示例代码如下:

添加学生信息模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加学生信息</title>
</head>
<body>
    <h1>添加学生信息</h1>
    <form action="{% url 'add_student' %}" method="post">
        {% csrf_token %}
        <p><label>学号: </label><input type="text" name="id"></p>
        <p><label>姓名: </label><input type="text" name="name"></p>
        <p><label>性别: </label><input type="radio" name="gender" value="男">男<input type="radio" name="gender" value="女">女</p>
        <p><label>年龄: </label><input type="text" name="age"></p>
        <p><label>邮箱: </label><input type="text" name="email"></p>
        <p><label>班级: </label><input type="text" name="class_id"></p>
        <input type="submit" value="添加">
    </form>
</body>
</html>

修改学生信息模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>修改学生信息</title>
</head>
<body>
    <h1>修改学生信息</h1>
    <form action="{% url 'update_student' %}" method="post">
        {% csrf_token %}
        <p><label>学号: </label><input type="text" name="id"></p>
        <p><label>姓名: </label><input type="text" name="name"></p>
        <p><label>性别: </label><input type="radio" name="gender" value="男">男<input type="radio" name="gender" value="女">女</p>
        <p><label>年龄: </label><input type="text" name="age"></p>
        <p><label>邮箱: </label><input type="text" name="email"></p>
        <p><label>班级: </label><input type="text" name="class_id"></p>
        <input type="submit" value="修改">
    </form>
</body>
</html>

查询学生信息模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>查询学生信息</title>
</head>
<body>
    <h1>查询学生信息</h1>
    <form action="{% url 'search_student' %}" method="post">
        {% csrf_token %}
        <p><label>学号: </label><input type="text" name="id"></p>
        <p><label>姓名: </label><input type="text" name="name"></p>
        <p><label>性别: </label><input type="radio" name="gender" value="男">男<input type="radio" name="gender" value="女">女</p>
        <p><label>年龄: </label><input type="text" name="age"></p>
        <p><label>邮箱: </label><input type="text" name="email"></p>
        <p><label>班级: </label><input type="text" name="class_id"></p>
        <input type="submit" value="查询">
    </form>
    <table border="1">
        <tr>
            <th>学号</th>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>邮箱</th>
            <th>班级</th>
        </tr>
        {% for student in students %}
        <tr>
            <td>{{ student.id }}</td>
            <td>{{ student.name }}</td>
            <td>{{ student.gender }}</td>
            <td>{{ student.age }}</td>
            <td>{{ student.email }}</td>
            <td>{{ student.class_id }}</td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>

5. 部署项目

完成代码编写后,需要将代码部署到服务器上,让用户能够访问。具体的部署方式视实际情况而定,可以使用Docker、Nginx、Supervisord等工具进行部署。

以上便是Python+Django+SQL学生信息管理后台开发的完整攻略及示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python+django+sql学生信息管理后台开发 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • 详解如何用django实现redirect的几种方法总结

    下面是关于“详解如何用Django实现redirect的几种方法总结”的攻略: 1. 使用redirect()函数 在Django中实现redirect最简单的方法就是使用redirect()函数。 1.1 redirect()函数的语法 redirect()函数的语法如下: redirect(to, *args, permanent=False, **kw…

    Django 2023年5月16日
    00
  • python-num18 - django进阶一

    一。深入django的路由系统 下面为django的请求生命周期   下面来看下整个生命周期中的路由系统: 在Django的urls中我们可以根据一个URL对应一个函数名来定义路由规则如下: “””mysite_django URL Configuration The `urlpatterns` list routes URLs to views. For …

    2023年4月9日
    00
  • django-evolution 插件维持Django 模型和数据库结构一致的基本原理

    django_evolution 插件中用于保存上个数据库版本的字符串为: “latest_version.signature”= unicode: (dp1\nS’sessions’\np2\nccopy_reg\n_reconstructor\np3\n(cdjango.utils.datastructures\nSortedDict\np4\nc__b…

    Django 2023年4月11日
    00
  • 用wfastcgi在IIS下部署Django&Flask

    Django跟Flask在Linux底下都可以很方便地以FastCGI模式部署,貌似IIS下面不很好配置,而且IIS也缺少一个像PHPmanager一样的全自动配置工具,在公司服务器上部署起来颇费周折,部署后总结起来过程倒也不复杂,主要是网上并没有给出一个完整的方案,这里记录一下方便大家使用 先来Django吧,在自己机器上简单开一个测试用网站,这里我用“C…

    Django 2023年4月16日
    00
  • python django 访问static静态文件

    settings 文件配置: STATIC_URL = ‘/static/’ STATICFILES_DIRS = ( os.path.join(BASE_DIR, ‘static’),)PROJECT_ROOT = os.path.dirname(__file__) STATICFILES_DIRS = (os.path.join(PROJECT_ROOT…

    Django 2023年4月10日
    00
  • Django项目部署流程与Nginx安装配置

    安装Nginx 在Ubuntu系统中,可以通过以下命令安装Nginx: sudo apt-get update sudo apt-get install nginx 配置静态文件访问 在Django项目的settings.py文件中,加入以下代码: STATIC_URL = '/static/' STATIC_ROOT = os.path…

    Django 2023年3月13日
    00
  • django web 中添加超链接

    django web 中添加不传参的超链接的方法如下: html: 在web中的超链接中加入一下url     <a href=”{% url ‘app_name.views.url_func’ %}”></a> {% url %}标签中的app_name为应用名,url_func为urls中的函数名;   urls.py 在模板中加…

    Django 2023年4月10日
    00
  • Django实现邮件的发送(含源码)

    Django是一个Python Web框架,提供了极为强大的发送电子邮件的能力。下面将详细阐述Django如何实现邮件的发送。 配置邮件设置 在Django的settings.py文件中,添加以下配置: EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_…

    Django 2023年3月13日
    00
合作推广
合作推广
分享本页
返回顶部