Django 从零搭建学生管理系统——完整项目实战 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_CODEzh-hansTIME_ZONEAsia/Shanghai三、定义模型# students/models.pyfromdjango.dbimportmodelsclassStudent(models.Model):namemodels.CharField(max_length50,verbose_name姓名)student_idmodels.CharField(max_length20,uniqueTrue,verbose_name学号)gendermodels.CharField(max_length10,choices[(男,男),(女,女)],default男,verbose_name性别)agemodels.IntegerField(nullTrue,blankTrue,verbose_name年龄)class_namemodels.CharField(max_length50,default未分配,verbose_name班级)phonemodels.CharField(max_length20,blankTrue,verbose_name手机号)emailmodels.EmailField(max_length254,blankTrue,verbose_name邮箱)addressmodels.TextField(blankTrue,verbose_name家庭地址)statusmodels.CharField(max_length10,default在读,choices[(在读,在读),(休学,休学),(毕业,毕业),(退学,退学)],verbose_name状态)created_atmodels.DateTimeField(auto_now_addTrue,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,namestudent_list),path(add/,views.student_add,namestudent_add),path(edit/int:pk/,views.student_edit,namestudent_edit),path(delete/int:pk/,views.student_delete,namestudent_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):学生列表含搜索和分页queryrequest.GET.get(q,)studentsStudent.objects.all()ifquery:studentsstudents.filter(models.Q(name__icontainsquery)|models.Q(student_id__icontainsquery)|models.Q(class_name__icontainsquery))paginatorPaginator(students,10)pagerequest.GET.get(page,1)students_pagepaginator.get_page(page)returnrender(request,students/list.html,{students:students_page,query:query,})defstudent_add(request):添加学生ifrequest.methodPOST:# 获取表单数据并创建学生studentStudent(namerequest.POST[name],student_idrequest.POST[student_id],genderrequest.POST[gender],agerequest.POST.get(age),class_namerequest.POST[class_name],phonerequest.POST.get(phone,),emailrequest.POST.get(email,),addressrequest.POST.get(address,),statusrequest.POST.get(status,在读),)student.save()messages.success(request,添加成功)returnredirect(student_list)returnrender(request,students/add.html)defstudent_edit(request,pk):编辑学生studentget_object_or_404(Student,pkpk)ifrequest.methodPOST:student.namerequest.POST[name]student.student_idrequest.POST[student_id]student.genderrequest.POST[gender]student.class_namerequest.POST[class_name]student.statusrequest.POST[status]student.save()messages.success(request,修改成功)returnredirect(student_list)returnrender(request,students/edit.html,{student:student})defstudent_delete(request,pk):删除学生studentget_object_or_404(Student,pkpk)student.delete()messages.success(request,删除成功)returnredirect(student_list)六、模板HTML创建students/templates/students/list.html!DOCTYPEhtmlhtmlheadmetacharsetUTF-8title学生管理系统/titlelinkhrefhttps://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.cssrelstylesheet/headbodydivclasscontainer mt-4h2classmb-4学生信息管理/h2!-- 搜索框 --formclassrow g-3 mb-3methodgetdivclasscol-md-6inputtypetextnameqclassform-controlplaceholder搜索姓名/学号/班级...value{{ query }}/divdivclasscol-md-2buttontypesubmitclassbtn btn-primary w-100搜索/button/divdivclasscol-md-2ahref{% url student_add %}classbtn btn-success w-100添加学生/a/div/form!-- 学生列表 --tableclasstable table-bordered table-stripedtheadtrth学号/thth姓名/thth性别/thth班级/thth状态/thth操作/th/tr/theadtbody{% for s in students %}trtd{{ s.student_id }}/tdtd{{ s.name }}/tdtd{{ s.gender }}/tdtd{{ s.class_name }}/tdtd{{ s.status }}/tdtdahref{% url student_edit s.id %}classbtn btn-sm btn-warning编辑/aahref{% url student_delete s.id %}classbtn btn-sm btn-dangeronclickreturnconfirm(确定删除)删除/a/td/tr{% empty %}trtdcolspan6classtext-center暂无数据/td/tr{% endfor %}/tbody/table!-- 分页 --{% if students.has_other_pages %}navulclasspagination{% if students.has_previous %}liclasspage-itemaclasspage-linkhref?page{{ students.previous_page_number }}q{{ query }}上一页/a/li{% endif %}liclasspage-item activespanclasspage-link{{ students.number }} / {{ students.paginator.num_pages }}/span/li{% if students.has_next %}liclasspage-itemaclasspage-linkhref?page{{ students.next_page_number }}q{{ query }}下一页/a/li{% endif %}/ul/nav{% endif %}/div/body/html七、启动项目# 创建数据库mysql-uroot-p-eCREATE 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/爬虫 实战干货不让你白来。