Django_学生管理系统

一. Django简易学生管理系统

1.在pycharm中创建工程student_manage_system,添加app:student_manage

2.配置静态文件:在工程项目目录下新建目录static,并在settings.py中追加代码

STATICFILES_DIRS=(os.path.join(BASE_DIR,‘static‘),)

3.设计学生管理系统所需数据库

  在studnet_manage/models.py创建班级管理表、学生管理表、老师管理表

from django.db import models

# Create your models here.
class classes(models.Model):
    title = models.CharField(max_length=32)
    teacher = models.ManyToManyField("Teachers")

class student(models.Model):
    StudentName = models.CharField(max_length=32)
    age = models.IntegerField()
    gender = models.BooleanField()
    cs = models.ForeignKey("classes",on_delete=models.CASCADE)

class Teachers(models.Model):
    TeacherName = models.CharField(max_length=32)

model.py

  在终端Terminal 项目目录下执行数据表更新命令:

python manage.py makemigrations
python manage.py migrate

4.学生管理系统之班级管理

 1.为了方便分别操作班级、老师、学生相关的业务,将student_manage目录下的views.py 删掉,在student_manage目录下新建目录views,并在views目录下 新建classes.py teachers.py students.py。

 2.在classes.py 中写 get_classes, add_classes ,delete_classes ,edit_classes四个函数,完成对班级数据的增删改查

from django.shortcuts import render
from django.shortcuts import redirect
from student_manage.models import *

def get_classes(request):
    class_list = classes.objects.all()
    return render(request,‘get_classes.html‘,{‘class_list‘:class_list})

def add_calsses(request):
    if request.method == "GET":
        return render(request, ‘add_classes.html‘)
    elif request.method == ‘POST‘:
        title = request.POST.get(‘title‘)
        classes.objects.create(title=title)
        return redirect(‘/get_classes.html‘)
def delete_classes(request):
    nid=request.GET.get(‘nid‘)
    classes.objects.filter(id=nid).delete()
    return redirect(‘/get_classes.html‘)
def edit_classes(request):
    if request.method==‘GET‘:
        nid = request.GET.get(‘nid‘,‘‘)
        obj = classes.objects.get(id=nid)
        return render(request,‘edit_classes.html‘,{"obj":obj})
    elif request.method==‘POST‘:
        nid = request.GET.get(‘nid‘,‘‘)
        title = request.POST.get(‘title‘)
        classes.objects.filter(id=nid).update(title=title)
        return redirect(‘/get_classes.html‘)

classes.py

 3.在urls.py 中配置url路由

from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from student_manage.views import classes,students,ajax

urlpatterns = [
    #path(‘admin/‘, admin.site.urls),
    url(‘^get_classes.html$‘,classes.get_classes),
    url(‘^add_classes.html$‘,classes.add_calsses),
    url(‘^delete_classes.html$‘,classes.delete_classes),
    url(‘^edit_classes.html$‘,classes.edit_classes),
    ]

urls.py

4.在templates目录下建立所需的html页面文件

 <1>get_classes.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
     <div>
        <a href="/add_classes.html">添加</a>
    </div>
    <table border="1">
            <thead>
                <tr>
                    <th>ID</th>
                    <th>班级名称</th>
                    <th>任课老师</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                 {% for row in class_list %}
                    <tr>
                        <td>
                            {{ row.id }}
                        </td>
                        <td>
                            {{ row.title}}
                        </td>
                        <td>
                            {% for item in row.teacher.all %}
                                <span>{{item.TeacherName}}</span>
                            {% endfor %}
                        </td>
                        <td>
                            <a href="/delete_classes.html?nid={{ row.id }}">删除</a>
                            |
                            <a href="/delete_classes.html?nid={{ row.id }}">ajax删除</a>
                            |
                            <a href="/edit_classes.html?nid={{ row.id }}">编辑</a>
                            |
                            <a href="/set_teacher.html?nid={{ row.id }}">分配老师</a>
                    </tr>
                {% endfor %}
            </tbody>
    </table>
</html>

get_classes.html

 <2>add_classes.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
     <form action="/add_classes.html" method="POST">
        {% csrf_token %}
        <input type="text" name="title" />
        <input type="submit" value="提交" />
    </form>
</body>
</html>

add_classes.html

<3>edit_classes.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h3>编辑学生信息</h3>
    <form method="post" action="/edit_students.html?nid={{ obj.id }}">
        {% csrf_token %}
        <p>姓名<input type="text" name="StudentName" value="{{ obj.StudentName }}"/></p>
        <p>年龄<input type="text"  name="age" value="{{ obj.age }}"/></p>
        <p>性别:
            {% if obj.gender %}
                男<input type="radio" name="gender"  checked="checked" value="1"/>
                女<input type="radio" name="gender" value="0"/>
                {% else%}
                男<input type="radio" name="gender"  value="1"/>
                女<input type="radio" name="gender" checked="checked" value="0"/>
            {% endif %}
        </p>
        <p>班级:
            <select name="class_id">
                {% for row in class_list%}
                    {% if row.id == obj.cs_id %}
                        <option value="{{ row.id }}" selected="selected">{{ row.title }}</option>
                    {% else %}
                        <option value="{{ row.id }}">{{ row.title }}</option>
                    {% endif %}
                {% endfor %}
            </select>
        </p>
        <p><input type="submit" value="提交修改"/></p>
    </form>
</body>
</html>

edit_classes.html

5.学生管理系统之学生管理

 1.在students.py 中写 get_students, add_students ,delete_students ,edit_students 四个函数,完成对学生数据的增删改查

from django.shortcuts import render
from django.shortcuts import redirect
from student_manage.models import *

def get_students(request):
    student_list=student.objects.all()
    return render(request,‘get_students.html‘,{‘student_list‘:student_list})
def add_students(request):
    class_list = classes.objects.all()
    if request.method == "GET":
        return render(request, ‘add_students.html‘,{‘class_list‘:class_list})
    if request.method == "POST":
        StudentName=request.POST.get(‘StudentName‘,‘‘)
        age=request.POST.get(‘age‘,‘‘)
        gender=request.POST.get(‘gender‘,‘‘)
        cs=request.POST.get(‘cs‘,‘‘)
        student.objects.create(StudentName=StudentName,age=age,gender=gender,cs_id=cs)
        return redirect(‘/get_students.html‘)

def delete_students(request):
    nid = request.GET.get(‘nid‘)
    student.objects.filter(id=nid).delete()
    return redirect(‘/get_students.html‘)

def edit_students(request):
    class_list = classes.objects.all()
    if request.method == ‘GET‘:
        nid = request.GET.get(‘nid‘,‘‘)
        obj = student.objects.get(id=nid)
        print("class_list:",class_list)
        return render(request,‘edit_students.html‘,{"class_list":class_list,"obj":obj})
    if request.method == ‘POST‘:
        nid = request.GET.get(‘nid‘,‘‘)
        StudentName = request.POST.get(‘StudentName‘,‘‘)
        age=request.POST.get(‘age‘,‘‘)
        gender=request.POST.get(‘gender‘,‘‘)
        cs=request.POST.get(‘class_id‘,‘‘)
        print("class_id",cs)
        student.objects.filter(id=nid).update(StudentName=StudentName,age=age,gender=gender,cs_id=cs)
        return redirect(‘/get_students.html‘)

students.py

 2.在urls.py 中配置url路由

from django.contrib import admin
from django.urls import path
from django.conf.urls import url
from student_manage.views import classes,students,ajax

urlpatterns = [
    #path(‘admin/‘, admin.site.urls),
    url(‘^get_classes.html$‘,classes.get_classes),
    url(‘^add_classes.html$‘,classes.add_calsses),
    url(‘^delete_classes.html$‘,classes.delete_classes),
    url(‘^edit_classes.html$‘,classes.edit_classes),
    url(‘^get_students.html$‘,students.get_students),
    url(‘^add_students.html$‘,students.add_students),
    url(‘student_del_ajax.html$‘,ajax.student_del_ajax),
    url(‘^delete_students.html$‘,students.delete_students),
    url(‘^student_edit_ajax‘,ajax.student_edit_ajax),
    url(‘^edit_students.html$‘,students.edit_students),
    url(‘^set_teacher.html$‘,classes.set_teacher)
]

urls.py

3.在templates目录下建立所需的html页面文件

<1>get_students.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<div><a href="/add_students.html">添加</a></div>
<body>
    <table border=1>
        <thead>
            <tr>
                <th>ID</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>性别</th>
                <th>班级</th>
                <th>操作</th>
            </tr>
        </thead>
        <tbody>
            {% for row in student_list %}
            <tr nid="{{ row.id }}">
                <td>{{ row.id }}</td>
                <td>{{ row.StudentName }}</td>
                <td>{{ row.age }}</td>
                {% if row.gender%}
                    <td>男</td>
                {% else %}
                    <td>女</td>
                {% endif %}
                <td>{{ row.cs.title }}</td>
                <td>
                    <a href="/delete_students.html?nid={{ row.id }}">删除</a>
                    |
                    <a onclick="RemoveStudent(this);" href="#">ajax删除</a>
                    |
                    <a href="/edit_students.html?nid={{ row.id }}">编辑</a>
                    |
                    <a onclick="EditStudent(this);" href="#">ajax编辑</a>
                </td>

            </tr>
            {% endfor %}
        </tbody>

    </table>
</body>
<script src="/static/jquery-3.1.1.js"></script>
<script>
 function RemoveStudent(ths) {
  var nid=$(ths).parent().parent().attr(‘nid‘);
  $.ajax({
       url:‘/student_del_ajax.html‘,
       type:‘GET‘,
       data:{nid:nid},
       success:function (arg) {
        if (arg == ‘delete successful‘){
            {#window.location.reload();#}
            $(ths).parent().parent().remove();
        }
        else{
            alert(arg);
        }
       }
     })
 }
</script>
</html>

get_students.html

<2>add_students.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h3>添加学生信息</h3>
    <form method="post" action="/add_students.html">
        {% csrf_token %}
        <p>姓名<input type="text" name="StudentName" placeholder="姓名"/></p>
        <p>年龄<input type="text"  name="age" placeholder="年龄"/></p>
        <p>性别:  男<input type="radio" name="gender" value="1"/>女<input type="radio" name="gender" value="0"/></p>
        <p>班级:
            <select name="cs">
                {% for row in class_list %}
                    <option value={{ row.id }}>{{ row.title }}</option>
                {% endfor %}
            </select>
        </p>
        <p><input type="submit" value="提交注册"/></p>
    </form>
</body>
</html>

add_students.html

<3>edit_students.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h3>编辑学生信息</h3>
    <form method="post" action="/edit_students.html?nid={{ obj.id }}">
        {% csrf_token %}
        <p>姓名<input type="text" name="StudentName" value="{{ obj.StudentName }}"/></p>
        <p>年龄<input type="text"  name="age" value="{{ obj.age }}"/></p>
        <p>性别:
            {% if obj.gender %}
                男<input type="radio" name="gender"  checked="checked" value="1"/>
                女<input type="radio" name="gender" value="0"/>
                {% else%}
                男<input type="radio" name="gender"  value="1"/>
                女<input type="radio" name="gender" checked="checked" value="0"/>
            {% endif %}
        </p>
        <p>班级:
            <select name="class_id">
                {% for row in class_list%}
                    {% if row.id == obj.cs_id %}
                        <option value="{{ row.id }}" selected="selected">{{ row.title }}</option>
                    {% else %}
                        <option value="{{ row.id }}">{{ row.title }}</option>
                    {% endif %}
                {% endfor %}
            </select>
        </p>
        <p><input type="submit" value="提交修改"/></p>
    </form>
</body>
</html>

edit_students.html

6.学生管理系统之教师分配

 1.在classes.py中增加教师分配函数set_teacher

from django.shortcuts import render
from django.shortcuts import redirect
from student_manage.models import *

def get_classes(request):
    class_list = classes.objects.all()
    return render(request,‘get_classes.html‘,{‘class_list‘:class_list})

def add_calsses(request):
    if request.method == "GET":
        return render(request, ‘add_classes.html‘)
    elif request.method == ‘POST‘:
        title = request.POST.get(‘title‘)
        classes.objects.create(title=title)
        return redirect(‘/get_classes.html‘)
def delete_classes(request):
    nid=request.GET.get(‘nid‘)
    classes.objects.filter(id=nid).delete()
    return redirect(‘/get_classes.html‘)
def edit_classes(request):
    if request.method==‘GET‘:
        nid = request.GET.get(‘nid‘,‘‘)
        obj = classes.objects.get(id=nid)
        return render(request,‘edit_classes.html‘,{"obj":obj})
    elif request.method==‘POST‘:
        nid = request.GET.get(‘nid‘,‘‘)
        title = request.POST.get(‘title‘)
        classes.objects.filter(id=nid).update(title=title)
        return redirect(‘/get_classes.html‘)

def set_teacher(request):
   if request.method==‘GET‘:
        nid = request.GET.get(‘nid‘,‘‘)
        class_obj=classes.objects.get(id=nid)
        class_teacher_list=class_obj.teacher.all()
        all_teacher_list=Teachers.objects.all()
        return render(request,‘set_teacher.html‘,{‘class_teacher_list‘:class_teacher_list,‘all_teacher_list‘:all_teacher_list,‘class_obj‘:class_obj})
   elif request.method==‘POST‘:
       nid=request.GET.get(‘nid‘,‘‘)
       ids_str=request.POST.getlist(‘teacher_id‘,‘‘)
       # obj = classes.objects.get(id=nid)
       # obj.teacher.set(ids_str)
       obj = classes.objects.filter(id=nid).first()
       obj.teacher.set(ids_str)
       return redirect(‘/get_classes.html‘)

classes.py

2.在templates目录下建立所需的html页面文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method="post" action="set_teacher.html?nid={{ class_obj.id }}">
        {% csrf_token %}
        <select multiple name="teacher_id">
        {% for row in all_teacher_list %}
            {% if row in class_teacher_list %}
                 <option value="{{ row.id }}" selected="selected">{{ row.TeacherName}}</option>
            {% else %}
                 <option value="{{ row.id }}">{{ row.TeacherName}}</option>
            {% endif %}
        {% endfor %}
        </select>
        <input type="submit" value="提交">
    </form>
</body>
</html>

set_teacher.html

原文地址:https://www.cnblogs.com/wuxunyan/p/9174446.html

时间: 2024-07-29 16:38:07

Django_学生管理系统的相关文章

学生管理系统(jsp+mysql)

1.实验目的 通过使用 Java Web 技术设计一个简单的数据库管理系统,了解前台页面和后 台编辑页面的区别,掌握 Web 服务器与 MySQL 数据库的连接和数据库操作的方 法,掌握使用 JSP 编写后台代码的方法. 2.实验内容和要求 开发一个学生管理系统,完成学生信息的查看.增加.删除和修改等功能. 对于客户端增加和修改信息页面,要使用 javascript 进行必要的数据的非空验证. 自行添加一些 css,使得页面和字体更加美观. 3.实验步骤及实验结果 (1)打开 MySQL,新建一

用链表写的学生管理系统 成绩的录入与查询都已经是实现了

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct teacher { char name[32]; int math; int english; int data; struct Node *next; }SLIST; int Creat_SList(); int SList_Print(); int SLis

c语言学生管理系统链表(dev vs2012下可以运行)

struct student { char name[10]; char sex[5]; long int num;//学号 int xuhao; int age; float score[3]; float averange; char DJ;//存放等级哦 struct student *next; };//定义结构体变量保存 名字 性别 年龄 成绩] 结构体声明 int n;//存放学生人数 int man;//存放统计的男生数 float JY(float a)//校验成绩使范围0-10

Mysql学生管理系统:表的建立,外键一对多,多对多关系,中间关联表的建立

学生管理系统 管理员注册/登录/注销 注册班级(班级详细信息) 注册学生信息 查看班级信息/查看老师资料 教师注册/注销  查看教师资料  查看学生资料  根据名称/班级/ 查看学生详细信息--支持模糊 注册科目 管理员(admini) ad_id(管理员id)     ad_number(管理员账号) ad_pass(管理员密码)    ad_yn(管理员是否禁用) create table admini( ad_id int PRIMARY KEY AUTO_INCREMENT,-- 主键自

微信南通大学教务学生管理系统_用户体验

刚开始我还没关注南通大学教务学生管理系统的时候都是经常用电脑登陆然后上去查课表或者成绩什么的,但是用电脑也挺不方便的,因为每次都输用户名和密码,挺烦的.后来关注微信之后觉得还挺方便的,(图片是盗用同学的,因为我的手机屏幕没那么大,不能一下子把整张图一次性截下),但是我想说的他的缺点也就是它的一张图片实在太长了,让人看的眼花,一下子不能马上找到自己想查的是什么,而且我们要查的内容都是通过输入字母和数字组成的,如果一下子记不住字母和数字,还要往上翻页去看一眼什么字母或者数字,才能继续输入.(我不知道

精美学生管理系统

半个学期即将完美结束,精美的学生管理系统也终于亮相啦,哈哈! 话不多说,切入正题. 首先,要了解完成学生管理系统的步骤: 总共有几个模块,我就逐一讲解: 一:完成登录页面模块 判断“登录”是否成功的代码: 1 private void btnLogin_Click(object sender, EventArgs e) 2 { 3 string str = DBHelper.str; 4 SqlConnection con = new SqlConnection(str); 5 string s

【php】1、学生管理系统-欢迎界面

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

简单的学生管理系统

简单的学生管理系统 一,主要功能: 1,添加学生信息: 2,添加的学生信息显示在线型布局中: 3,把学生信息保存在xml文件中: 4,把保存在mxl中的学生信息取出来解析显示在界面: 二,主要知识点: 1,layout_weight的使用: 2,pull解析xml文件,xml序列化: 3,保存数据到sd卡: 4,动态添加控件刷新界面: 三,界面原型如下图: 四,代码展示: 1,界面xml文件,activity_main.xml <LinearLayout xmlns:android="ht

Servlet实例开发---学生管理系统

Servlet总结 本程序采用Servlet开发技术,MVC分层,所有程序在设计时都要接口为操作的标准,主要逻辑操作只有增删改查. 具体实现操作请看源代码. 本程序采用的是MYSQL数据库,需加入相应的jar包 目录结构 首先贴上底层数据层: 连接数据库 package com.student.dbc ; import java.sql.* ; public class DatabaseConnection { private static final String DBDRIVER = "or