“Python+Django+SQL学生信息管理后台开发”是一项非常实用的项目,可以帮助学校、教育机构、学院等管理学生的个人信息和学习成绩。下面是完整攻略及示例说明:
1. 确定项目需求
在开始项目前,首先需要确定项目的需求,明确项目要解决的问题。例如,要开发一个学生信息管理后台,需要实现的功能包括:
- 学生信息的录入、修改和删除
- 学生信息的查询功能
- 学生成绩的录入和查询功能
- 班级、学院等基础信息的管理功能等
2. 搭建开发环境
接下来需要搭建Python、Django和MySQL等开发环境。安装好必要的软件后,创建一个Django项目,命名为StudentManage,进入到该项目的目录下。
3. 数据库设计
根据需求设计数据库模型。在MySQL中创建一个名为student_management的数据库,然后创建students、grades和classes三张数据表,分别表示学生信息、成绩和班级信息。具体的表结构如下:
students表结构
字段名 | 数据类型 | 说明 |
---|---|---|
id | 整数 | 学生学号,主键 |
name | 字符串 | 学生姓名 |
gender | 字符串 | 学生性别 |
age | 整数 | 学生年龄 |
字符串 | 学生电子邮件地址 | |
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技术站