商家入驻
发布需求

PyCharm + Django 学生管理系统开发教程

   2025-07-06 9
导读

本教程将指导您如何使用 PyCharm 和 Django 创建一个学生管理系统。学生管理系统是一个用于管理学生信息、课程信息、成绩等信息的系统。我们将从零开始,逐步完成项目的搭建、数据库设计、模型定义、视图和模板创建、表单验证以及最后的部署。

PyCharm + Django 学生管理系统开发教程

一、项目概述

本教程将指导您如何使用 PyCharm 和 Django 创建一个学生管理系统。学生管理系统是一个用于管理学生信息、课程信息、成绩等信息的系统。我们将从零开始,逐步完成项目的搭建、数据库设计、模型定义、视图和模板创建、表单验证以及最后的部署。

二、环境准备

1. 安装 PyCharm:访问 PyCharm 官网(https://www.jetbrains.com/pycharm/)下载并安装适合您操作系统的 PyCharm 版本。

2. 安装 Django:访问 Django 官网(https://www.djangoproject.com/)下载并安装适合您操作系统的 Django 版本。

3. 创建虚拟环境:在命令行中输入以下命令,创建一个新的虚拟环境:

```bash

python -m venv myenv

```

4. 激活虚拟环境:在命令行中输入以下命令,激活虚拟环境:

```bash

source myenv/bin/activate

```

5. 安装所需依赖:在虚拟环境中输入以下命令,安装所需的依赖包:

```bash

pip install django

```

三、项目结构

1. 创建一个新的 Django 项目:在命令行中输入以下命令,创建一个新的 Django 项目:

```bash

django-admin startproject student_management_system

```

2. 进入项目目录:在命令行中输入以下命令,进入项目目录:

```bash

cd student_management_system

```

四、数据库设计

1. 创建数据库:在命令行中输入以下命令,创建名为 `student` 的数据库:

```sql

python manage.py migrate

```

2. 创建表结构:在命令行中输入以下命令,创建 `student` 表的结构:

```sql

python manage.py makemigrations

python manage.py migrate

```

五、模型定义

1. 创建 `Student` 模型:在命令行中输入以下命令,创建 `Student` 模型:

```python

from django.db import models

class Student(models.Model):

name = models.CharField(max_length=100)

age = models.IntegerField()

email = models.EmailField(unique=True)

phone = models.CharField(max_length=15)

```

2. 创建 `Course` 模型:在命令行中输入以下命令,创建 `Course` 模型:

```python

from django.db import models

class Course(models.Model):

name = models.CharField(max_length=100)

teacher = models.CharField(max_length=100)

students = models.ManyToManyField(Student)

```

六、视图和模板创建

1. 创建 `student_list` 视图:在命令行中输入以下命令,创建 `student_list` 视图:

```python

from django.shortcuts import render

from .models import Student, Course

def student_list(request):

students = Student.objects.all()

return render(request, 'student_list.html', {'students': students})

```

2. 创建 `add_student` 视图:在命令行中输入以下命令,创建 `add_student` 视图:

```python

from django.shortcuts import render, redirect

from .models import Student, Course

from .forms import StudentForm

def add_student(request):

if request.method == 'POST':

form = StudentForm(request.POST)

if form.is_valid():

form.save()

return redirect('student_list')

else:

form = StudentForm()

return render(request, 'add_student.html', {'form': form})

```

3. 创建 `edit_student` 视图:在命令行中输入以下命令,创建 `edit_student` 视图:

```python

from django.shortcuts import render, redirect

from .models import Student, Course

from .forms import StudentForm

def edit_student(request, student_id):

student = get_object_or_404(Student, id=student_id)

if request.method == 'POST':

PyCharm + Django 学生管理系统开发教程

form = StudentForm(request.POST, instance=student)

if form.is_valid():

form.save()

return redirect('student_list')

else:

form = StudentForm(instance=student)

return render(request, 'edit_student.html', {'form': form})

```

4. 创建 `delete_student` 视图:在命令行中输入以下命令,创建 `delete_student` 视图:

```python

from django.shortcuts import render, redirect, get_object_or_404

from .models import Student, Course

from .forms import StudentForm

def delete_student(request, student_id):

student = get_object_or_404(Student, id=student_id)

if request.method == 'POST':

student.delete()

return redirect('student_list')

return render(request, 'delete_student.html', {'student': student})

```

5. 创建 `add_course` 视图:在命令行中输入以下命令,创建 `add_course` 视图:

```python

from django.shortcuts import render, redirect, get_object_or_404

from .models import Course, Student, CourseInstructor

from .forms import CourseForm, CourseInstructorForm

def add_course(request):

if request.method == 'POST':

form = CourseForm(request.POST)

if form.is_valid():

form.save()

course = form.save()

instructor = form.cleaned_data['instructor']

instructor = get_object_or_404(User, username=instructor)

course.instructors.add(instructor)

course.save()

return redirect('student_list')

else:

form = CourseForm()

return render(request, 'add_course.html', {'form': form})

```

6. 创建 `edit_course` 视图:在命令行中输入以下命令,创建 `edit_course` 视图:

```python

from django.shortcuts import render, redirect, get_object_or_404

from .models import Course, Student, CourseInstructor

from .forms import CourseForm, CourseInstructorForm

def edit_course(request, course_id):

course = get_object_or_404(Course, id=course_id)

if request.method == 'POST':

form = CourseForm(request.POST, instance=course)

if form.is_valid():

form.save()

course.update(course.name=form.cleaned_data['name'], course.teacher=form.cleaned_data['teacher'])

course.save()

return redirect('student_list')

else:

form = CourseForm()

return render(request, 'edit_course.html', {'course': course, 'form': form})

```

七、表单验证和提交处理

1. 创建 `StudentForm` 类:在命令行中输入以下命令,创建 `StudentForm` 类:

```python

from django import forms

from .models import Student, CourseInstructor

from .forms import CourseForm, CourseInstructorForm

class StudentForm(forms.ModelForm):

class Meta:

model = Student

fields = ['name', 'age', 'email', 'phone']

labels = {

'name': '姓名',

'age': '年龄',

'email': '邮箱',

'phone': '电话'

}

extra_fields = {"password": "密码"}

```

2. 创建 `CourseInstructorForm` 类:在命令行中输入以下命令,创建 `CourseInstructorForm` 类:

```python

from django import forms

from .models import User, CourseInstructor

from .forms import CourseForm, CourseInstructorForm

class CourseInstructorForm(forms.ModelForm):

class Meta:

model = User

fields = ['username']

labels = {"username": "用户名"} + [f"{k}: {v}" for k, v in self.fields.items()]

```

3. 创建表单验证逻辑:在命令行中输入以下命令,创建表单验证逻辑:

```python

from django import forms

from .models import Student, CourseInstructor, Course, StudentForm, CourseInstructorForm

from .forms import *

from django.core.exceptions import ValidationError

from django.contrib.auth.decorators import login_required

from django.contrib import messages

from django.urls import reverse_lazy

from django.utils import timezone

from django.utils.translation import gettext as _

import datetime

import pytz

import pytz.countrytimezones as countrytimezones

import pytz.timezone as timezones

import pytz.timezoneinfo as timezoneinfos

import pytz.tzlocal as locales

import pytz.tzoffset as offsets

import pytz.tzoffsets as offsetsssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSISSSESSSESS

 
举报收藏 0
免责声明
• 
本文内容部分来源于网络,版权归原作者所有,经本平台整理和编辑,仅供交流、学习和参考,不做商用。转载请联系授权,并注明原文出处:https://www.itangsoft.com/baike/show-2459309.html。 如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除。涉及到版权或其他问题,请及时联系我们处理。
 
 
更多>热门产品
蓝凌MK 蓝凌MK

130条点评 4.5星

办公自动化

简道云 简道云

0条点评 4.5星

低代码开发平台

帆软FineBI 帆软FineBI

0条点评 4.5星

商业智能软件

纷享销客CRM 纷享销客CRM

0条点评 4.5星

客户管理系统

悟空CRM 悟空CRM

113条点评 4.5星

客户管理系统

钉钉 钉钉

0条点评 4.6星

办公自动化

金蝶云星空 金蝶云星空

0条点评 4.4星

ERP管理系统

用友YonBIP 用友YonBIP

0条点评 4.5星

ERP管理系统

唯智TMS 唯智TMS

113条点评 4.6星

物流配送系统

蓝凌EKP 蓝凌EKP

0条点评 4.5星

办公自动化

 
 
更多>同类知识

发需求

免费咨询专家帮您选产品

找客服

客服热线:177-1642-7519

微信扫码添加

小程序

使用小程序 查找更便捷

微信扫码使用

公众号

关注公众号 消息更及时

微信扫码关注

顶部