django 测试服1之学生

models :

from django.db import models

# Create your models here.
class Teacher(models.Model):
name = models.CharField(max_length=20, verbose_name='名字')
password = models.CharField(max_length=255, verbose_name='密码')

class Meta:
db_table = 'teacher'


class Student(models.Model):
name = models.CharField(max_length=20, verbose_name='名字')
age = models.CharField(max_length=100, verbose_name='年龄')
tid = models.ForeignKey(Teacher, on_delete=models.SET_NULL, null=True, blank=True)

class Meta:
db_table = 'student'

urls:

from django.contrib import admin
from django.urls import path
from app3 import views

urlpatterns = [
# path('admin/', admin.site.urls),
path('register', views.register),
path('login', views.login),
path('index', views.index),
path('show_student', views.show_student),
path('orphan', views.orphan),
path('del_stu', views.del_stu),
path('add_class', views.add_class),
]

views:

from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.contrib.auth.hashers import check_password, make_password
from . import models

# Create your views here.

# 老师注册视图
def register(request):
if request.method == 'GET':
return render(request, 'app3/register.html')
if request.method == 'POST':
name = request.POST.get('name')
pwd1 = request.POST.get('pwd1')
pwd2 = request.POST.get('pwd2')
# 数据完整性的判断
if all([name, pwd1, pwd2]):
if name:
if pwd1 == pwd2:
password = make_password(pwd1) # 哈希密码
models.Teacher.objects.create(
name=name,
password=password
)
else:
return HttpResponse('密码不同')
else:
return HttpResponse('账号未填写')
else:
return HttpResponse('数据不全')
return redirect('/app3/login')

# 登录
def login(request):
if request.method == 'GET':
return render(request, 'app3/login.html')
if request.method == 'POST':
name = request.POST.get('name')
pwd1 = request.POST.get('pwd1')
if all([name, pwd1]):
if name:
teacher = models.Teacher.objects.get(name=name)
if check_password(pwd1, teacher.password):
request.session['teachername'] = teacher.name
request.session['teacherid'] = teacher.id
return redirect('/app3/index')
else:
return HttpResponse('密码错误')
else:
return HttpResponse('账号错误')

# 首页展示
def index(request):
if request.method == 'GET':
id_ = request.session.get('teacherid')
tea = models.Teacher.objects.get(id=id_)
teacher = models.Teacher.objects.all()
teachername = request.session.get('teachername')
return render(request, 'app3/index.html', locals())
if request.method == 'POST':
name = request.POST.get('name')
age = request.POST['age']
id_ = request.session.get('teacherid')
tea = models.Teacher.objects.get(id=id_)
stu = models.Student.objects.create(
name=name,
age=age,
tid=tea
)
teacher = models.Teacher.objects.all()
teachername = request.session.get('teachername')
return render(request, 'app3/index.html', locals())


# 展示自身学生
def show_student(request):
id_ = request.session.get('teacherid')
tea = models.Teacher.objects.get(id=id_)
stu = tea.student_set.all()
return render(request, 'app3/show_student.html', locals())


# 展示未分班的学生
def orphan(request):
stu = models.Student.objects.filter(tid=None)
return render(request, 'app3/orphan.html', locals())


# 删除学生与老师的关联关系
def del_stu(request):
if request.method == 'GET':
id_ = request.GET.get('id')
stu = models.Student.objects.get(id=id_)
stu.tid = None
stu.save()
return redirect('/app3/index')

# 加入班级
def add_class(request):
id_ = request.session.get('teacherid')
teachaer = models.Teacher.objects.get(id=id_)
sid = request.GET.get('id')
stu = models.Student.objects.get(id=sid)
stu.tid = teachaer
stu.save()
return redirect('/app3/index')

html:

index:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>欢迎您 {{ teachername }}!</p>
<h1>学生信息录入</h1>
<form action="" method="post">
{% csrf_token %}
<label for="">学生姓名:</label>
<input type="text" name="name"><br>
<label for="">年龄:</label>
<input type="text" name="age"><br>
<button type="submit">提交</button>
</form>
<br>
<a href="/app3/show_student?id={{ tea.id }}">点击查看您班级的学生</a><br>
<a href="/app3/orphan">点击查看未分班的学生</a>
<h1>已经注册的老师有</h1>
{% for i in teacher %}
{{ i.name }}
{% endfor %}

</body>
</html>

login&register:略

orphan:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>还未分班学生有:</p>
<table>
<tr>
<td>学生姓名</td>
<td>操作</td>
</tr>
{% for i in stu %}
<tr>
<td>{{ i.name }}</td>
<td><a href="add_class?id={{ i.id }}">加入班级</a></td>
</tr>
{% endfor %}
</table>
<br>
<a href="/app3/index">返回首页</a>
</body>
</html>

show_student:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p>您的学生有:</p>
<table>
<tr>
<td>学生姓名</td>
<td>操作</td>
</tr>
{% for i in stu %}
<tr>
<td>{{ i.name }}</td>
<td><a href="del_stu?id={{ i.id }}">删除</a></td>
</tr>
{% endfor %}
</table>
<br>
<a href="/app3/index">返回首页</a>
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/lhrd/p/10910311.html