练习随笔 - django学生管理系统

首先在models页面中创建表

其中一个学生表一个老师表

学生表关联老师表

from django.db import models

class Teacher(models.Model):    name = models.CharField(max_length=20,verbose_name=‘姓名‘)    username = models.CharField(max_length=20,verbose_name=‘登录名‘)    password = models.CharField(max_length=20,verbose_name=‘密码‘)

class Student(models.Model):    name = models.CharField(max_length=20,verbose_name=‘学生姓名‘)    age = models.IntegerField(verbose_name=‘年龄‘)    teacher = models.ForeignKey(Teacher,on_delete=models.SET_NULL,null=True,blank=True)

# Create your models here.

views.py页面

注释为解释

from django.shortcuts import render,HttpResponse,redirectfrom . import models

def login(request):    #登录页面    if request.method == ‘GET‘:        return render(request, ‘login.html‘)    if request.method == ‘POST‘:        username = request.POST.get(‘username‘) #输入账号        password = request.POST.get(‘password‘) #输入密码        user_obj = models.Teacher.objects.filter(username=username,password=password).first()#数据库匹配        if user_obj: #判断是否有对应账户和密码是否匹配            request.session[‘user_id‘]=user_obj.id #存session            return redirect(‘/show/‘) #返回        else: #如果账户和密码不匹配            return HttpResponse(‘用户名或密码错误‘)

def register(request): #注册    if request.method == ‘GET‘:        return render(request,‘register.html‘)    if request.method == ‘POST‘:        name = request.POST.get(‘name‘) #输入名称        username = request.POST.get(‘username‘) #输入登录名        password = request.POST.get(‘password‘) #输入登录密码        re_pwd = request.POST.get(‘re_pwd‘) #重复提交密码        if username and password and re_pwd: #判断是否获取到三个值            if password == re_pwd: #如果两次输入密码一致                user_obj = models.Teacher.objects.filter(username=username).first() #查询用户名是否存在                if user_obj: #如果已经存在                    return HttpResponse(‘用户已存在‘)                else: #如果都没有存在就将输入的存入数据库                    models.Teacher.objects.create(name=name,username=username,password=password).save()                    return redirect(‘/login/‘) #返回            else: #如果两次密码输入不一致                return HttpResponse(‘两次密码不一致‘)        else: #如果有空值            return HttpResponse(‘不能有空!‘)

def index(request): #展示所有老师    teacher = models.Teacher.objects.all() #数据库查询

    return render(request, ‘index.html‘, locals()) #把变量传到html中

def show(request): #展示学生页    user_id = request.session.get(‘user_id‘) #取session    teacher = models.Teacher.objects.all().filter(id=user_id) #通过session查询登录的teacherid    context = {        ‘teacher‘ : teacher #teacher传到Html    }    if request.method == ‘POST‘:        name = request.POST.get(‘name‘) #获得输入的name        age = request.POST.get(‘age‘) #获得输入的age        if name and age: #如果获取到了name和age            user_id = request.session.get(‘user_id‘)  #取session            student = models.Student.objects.create(name=name,age=age,teacher_id=user_id) #添加学生的信息和关联的老师        else:            return HttpResponse(‘不能有空!‘)    return render(request, ‘show.html‘, context)

def student(request): #展示学生    user_id = request.session.get(‘user_id‘) #获取session    student = models.Student.objects.all().filter(teacher_id=user_id) #通过session查找到老师关联的学生    context = {        ‘student‘ : student #传递到html    }    return render(request, ‘student.html‘, context)

def del_student(request,id): #删除    models.Student.objects.filter(id=id).update(teacher = None) #通过session查询学生的id然后将主键关联删除    return HttpResponse(‘删除成功‘)

def no_student(request): #没有分的学生    user_id = request.session.get(‘user_id‘) #取session    no_student = models.Student.objects.all().filter(teacher_id=None) #查询所有没有主键关联的学生    context = {        ‘no_student‘ : no_student #传递到html    }    return render(request, ‘no_student.html‘, context)

def add_class(request,id): #添加班级    user_id = request.session.get(‘user_id‘) #取session    models.Student.objects.filter(id=id).update(teacher_id = user_id) #将没有关联的学生关联到老师    return HttpResponse(‘添加成功‘)# Create your views here.

html页面1. index页面
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>首页展示</title></head><body>

{% for i in teacher %}{#    循环#}

   {{ i.name }}{#    取姓名#}

{% endfor %}

</body></html>2.login页面
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>login</title></head><body><h1>登陆界面</h1>{#最简单的html代码#}{#这里要提醒下,提交到后台的get,post方式都可以,但是作为账户数据的话,用post#}<form action="/login/" method="post">{#    form表单#}    {% csrf_token %}    用户名:<input type="text" name="username"><br>    密码:<input type="password" name="password"><br>    <input type="submit" value="登陆"></form></body></html>3.no_student页面
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body>还未分班的学生有:<table>    <tr>        <td>学生</td>        <td>操作</td>    </tr>    <tr>        {% for x in no_student %}        <td>{{ x.name }}</td>        <td><a href="/add/{{ x.id }}">加入班级</a></td>{#            切记前面加/#}        {% endfor %}    </tr></table></body></html>4.register页面
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>register</title></head><body>    <h1>注册界面</h1>    <form action="" method="post">        {% csrf_token %}        姓名:<input type="text" name="name"><br>        用户名:<input type="text" name="username"><br>        密码:<input type="password" name="password"><br>        确认密码:<input type="password" name="re_pwd"><br>        <input type="submit" value="注册">    </form></body></html>5.show页面
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>首页展示</title></head><body>

{% for i in teacher %}

   欢迎你, {{ i.name }}

{% endfor %}

<form method="post">    {% csrf_token %}    学生姓名:<input type="text" name="name"><br>    年  龄:<input type="text" name="age"><br>    <button type="submit">提交</button></form><a href="/student/">点击查看您班级的学生</a><a href="/no_student/">点击查看未分班的学生</a>

</body></html>6.student页面
<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body>您的学生有:

    <table>        <tr>            <td>姓名</td>            <td>操作</td>        </tr>{% for x in student %}        <tr>

            <td>{{ x.name }}</td>            <td><a href="/del/{{ x.id }}/">删除</a></td>        </tr>{% endfor %}    </table>

</body></html>

此练习为本人在某大某鸟的练习记录 如有不足望指正与理解


原文地址:https://www.cnblogs.com/derrickwilliams/p/10894834.html

时间: 2024-12-26 07:56:20

练习随笔 - django学生管理系统的相关文章

DJANGO 学生管理系统项目创建流程 -- 单表管理

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px ".PingFang SC"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545; min-height: 14.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; f

Django 学生管理系统

1. 一对一 班级  模态增加 编辑 def classes(request): data = sqlheper.get_list("select cid,title from class",[]) return render(request, "classes.html", {"data": data}) def motai_add_class(request): ret = {'status': True, 'message': None}

ORM版,学生管理系统02

学生管理系统 urls.py url(r'^student_list/$',views.student_list,name="student_list"), url(r'^delete_student/(?P<sid>\d+)/$',views.delete_student,name="delete_student"), url(r'^add_student/',views.add_student,name="add_student"

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

学生管理系统(用中间件)-------基于FORM组件

x学生管理系统(用中间件)-------基于FORM组件 目的:实现学生,老师,课程的增删改查 models.py from django.db import models # Create your models here. class UserInfo(models.Model): """ 用户表:既有班主任也有老师 """ username = models.CharField(max_length=32) password = model

学生管理系统(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,-- 主键自