Django 是 Python 最流行的 Web 框架。本文从零开始,搭建一个完整的学生信息管理系统,覆盖 Django 开发的完整流程。
一、项目准备
# 安装 Djangopipinstalldjango mysqlclient# 创建项目django-admin startproject student_systemcdstudent_system# 创建应用python manage.py startapp students二、数据库配置
# student_system/settings.pyDATABASES={'default':{'ENGINE':'django.db.backends.mysql','NAME':'student_system','USER':'root','PASSWORD':'123456','HOST':'localhost','PORT':3306,}}INSTALLED_APPS=[...'students',]LANGUAGE_CODE='zh-hans'TIME_ZONE='Asia/Shanghai'三、定义模型
# students/models.pyfromdjango.dbimportmodelsclassStudent(models.Model):name=models.CharField(max_length=50,verbose_name="姓名")student_id=models.CharField(max_length=20,unique=True,verbose_name="学号")gender=models.CharField(max_length=10,choices=[('男','男'),('女','女')],default='男',verbose_name="性别")age=models.IntegerField(null=True,blank=True,verbose_name="年龄")class_name=models.CharField(max_length=50,default='未分配',verbose_name="班级")phone=models.CharField(max_length=20,blank=True,verbose_name="手机号")email=models.EmailField(max_length=254,blank=True,verbose_name="邮箱")address=models.TextField(blank=True,verbose_name="家庭地址")status=models.CharField(max_length=10,default='在读',choices=[('在读','在读'),('休学','休学'),('毕业','毕业'),('退学','退学')],verbose_name="状态")created_at=models.DateTimeField(auto_now_add=True,verbose_name="创建时间")classMeta:verbose_name="学生"verbose_name_plural="学生"def__str__(self):returnf"{self.name}({self.student_id})"# 生成数据库表python manage.py makemigrations python manage.py migrate四、路由配置
# students/urls.pyfromdjango.urlsimportpathfrom.importviews urlpatterns=[path('',views.student_list,name='student_list'),path('add/',views.student_add,name='student_add'),path('edit/<int:pk>/',views.student_edit,name='student_edit'),path('delete/<int:pk>/',views.student_delete,name='student_delete'),]# student_system/urls.pyfromdjango.contribimportadminfromdjango.urlsimportpath,include urlpatterns=[path('admin/',admin.site.urls),path('students/',include('students.urls')),]五、视图函数
# students/views.pyfromdjango.shortcutsimportrender,redirect,get_object_or_404from.modelsimportStudentfromdjango.core.paginatorimportPaginatorfromdjango.contribimportmessagesdefstudent_list(request):"""学生列表(含搜索和分页)"""query=request.GET.get('q','')students=Student.objects.all()ifquery:students=students.filter(models.Q(name__icontains=query)|models.Q(student_id__icontains=query)|models.Q(class_name__icontains=query))paginator=Paginator(students,10)page=request.GET.get('page',1)students_page=paginator.get_page(page)returnrender(request,'students/list.html',{'students':students_page,'query':query,})defstudent_add(request):"""添加学生"""ifrequest.method=='POST':# 获取表单数据并创建学生student=Student(name=request.POST['name'],student_id=request.POST['student_id'],gender=request.POST['gender'],age=request.POST.get('age'),class_name=request.POST['class_name'],phone=request.POST.get('phone',''),email=request.POST.get('email',''),address=request.POST.get('address',''),status=request.POST.get('status','在读'),)student.save()messages.success(request,'添加成功!')returnredirect('student_list')returnrender(request,'students/add.html')defstudent_edit(request,pk):"""编辑学生"""student=get_object_or_404(Student,pk=pk)ifrequest.method=='POST':student.name=request.POST['name']student.student_id=request.POST['student_id']student.gender=request.POST['gender']student.class_name=request.POST['class_name']student.status=request.POST['status']student.save()messages.success(request,'修改成功!')returnredirect('student_list')returnrender(request,'students/edit.html',{'student':student})defstudent_delete(request,pk):"""删除学生"""student=get_object_or_404(Student,pk=pk)student.delete()messages.success(request,'删除成功!')returnredirect('student_list')六、模板(HTML)
创建students/templates/students/list.html:
<!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>学生管理系统</title><linkhref="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css"rel="stylesheet"></head><body><divclass="container mt-4"><h2class="mb-4">学生信息管理</h2><!-- 搜索框 --><formclass="row g-3 mb-3"method="get"><divclass="col-md-6"><inputtype="text"name="q"class="form-control"placeholder="搜索姓名/学号/班级..."value="{{ query }}"></div><divclass="col-md-2"><buttontype="submit"class="btn btn-primary w-100">搜索</button></div><divclass="col-md-2"><ahref="{% url 'student_add' %}"class="btn btn-success w-100">添加学生</a></div></form><!-- 学生列表 --><tableclass="table table-bordered table-striped"><thead><tr><th>学号</th><th>姓名</th><th>性别</th><th>班级</th><th>状态</th><th>操作</th></tr></thead><tbody>{% for s in students %}<tr><td>{{ s.student_id }}</td><td>{{ s.name }}</td><td>{{ s.gender }}</td><td>{{ s.class_name }}</td><td>{{ s.status }}</td><td><ahref="{% url 'student_edit' s.id %}"class="btn btn-sm btn-warning">编辑</a><ahref="{% url 'student_delete' s.id %}"class="btn btn-sm btn-danger"onclick="returnconfirm('确定删除?')">删除</a></td></tr>{% empty %}<tr><tdcolspan="6"class="text-center">暂无数据</td></tr>{% endfor %}</tbody></table><!-- 分页 -->{% if students.has_other_pages %}<nav><ulclass="pagination">{% if students.has_previous %}<liclass="page-item"><aclass="page-link"href="?page={{ students.previous_page_number }}&q={{ query }}">上一页</a></li>{% endif %}<liclass="page-item active"><spanclass="page-link">{{ students.number }} / {{ students.paginator.num_pages }}</span></li>{% if students.has_next %}<liclass="page-item"><aclass="page-link"href="?page={{ students.next_page_number }}&q={{ query }}">下一页</a></li>{% endif %}</ul></nav>{% endif %}</div></body></html>七、启动项目
# 创建数据库mysql-uroot-p-e"CREATE DATABASE student_system DEFAULT CHARSET utf8mb4;"# 运行项目python manage.py runserver浏览器访问http://localhost:8000/students/就能看到效果了。
八、常用命令总结
python manage.py startapp app_name# 创建应用python manage.py makemigrations# 生成迁移文件python manage.py migrate# 执行迁移python manage.py createsuperuser# 创建管理员python manage.py runserver# 启动开发服务器python manage.py shell# 进入交互式环境总结
Django 开发的核心流程:模型定义 → 数据库迁移 → 视图编写 → 模板渲染 → 路由配置。上手 Django 后,开发 CRUD 类 Web 应用非常高效,适合快速搭建中小型项目。
💡 觉得有用的话,点赞 + 关注【张老师技术栈】吧!每周更新 Java/Python/爬虫 实战干货,不让你白来。