django 测试服3之幼儿

url:

from django.contrib import admin
from django.urls import path,re_path,include
from app import views
urlpatterns = [
path('admin/', admin.site.urls),
path('register/',views.register,name='register'),
path('add_course/',views.add_course,name='add_course'),
path('add_grade/',views.add_grade,name='add_grade'),
path('login/',views.login,name='login'),
path('',views.index,name='index'),
path('outlogin/',views.out_login,name='outlogin'),
path('grade_up/<int:stu_id>',views.grade_up,name='grade_up'),
re_path(r'^search/', include('haystack.urls')),

]

modles:

from django.db import models

# Create your models here.

class Grade(models.Model):
name = models.CharField(max_length=25)
class Course(models.Model):
name = models.CharField(max_length=25)
grade = models.ForeignKey(Grade,on_delete=models.CASCADE)
class Student(models.Model):
name = models.CharField(max_length=25)
user = models.CharField(max_length=20)
password = models.CharField(max_length=20)
grade = models.ForeignKey(Grade,on_delete=models.CASCADE)

views:

from django.shortcuts import render,redirect,reverse
from . import models
# Create your views here.

def add_grade(request): # 添加年级表数据
if request.method == 'GET':
return render(request,'add_grade.html') # 返回页面
if request.method == 'POST':
name = request.POST.get('name') # 拿到数据
grade = models.Grade.objects.create(name=name)
flash = '添加年级成功' # 添加
return render(request,'add_grade.html',locals())
def add_course(request): # 添加课程表数据
grade = models.Grade.objects.all()
if request.method == 'GET': # 拿到数据
return render(request,'add_course.html',locals())
if request.method == 'POST':
name = request.POST.get('name') # 添加
grade = request.POST.get('grade')
g = models.Grade.objects.get(pk=grade)
course = models.Course.objects.create(
name = name,
grade = g
)
flash = '添加课程成功'
grade = models.Grade.objects.all() # 为了表单的下拉框
return render(request,'add_course.html',locals())

def register(request):
grade = models.Grade.objects.all() # # 为了表单的下拉框
if request.method == 'GET':
return render(request,'register.html',locals())
if request.method == 'POST':
name = request.POST.get('name')
user = request.POST.get('user') # 拿到数据
password = request.POST.get('password')
grade_id = request.POST.get('grade')
if not all([name,user,password,grade]):
error = '输入不完整'
return render(request,'register.html',locals())
else:

u = models.Student.objects.create( # 添加
name = name,
user = user,
password = password,
grade_id = grade_id
)
return redirect(reverse('login'))

def login(request):
if request.method == 'GET': # 返回页面
return render(request,'login.html',locals())
if request.method == 'POST':
user = request.POST.get('user') # 拿到登录数据
password = request.POST.get('password')
if all([user,password]):
s = models.Student.objects.get(user=user)
request.session['user'] = s.id
return redirect(reverse('index')) # 到主页


def index(request):
user = request.session.get('user')
if user:
stu = models.Student.objects.get(pk=user) # 判断是否登录 用来展示不同的数据
grade = stu.grade.name
course = models.Course.objects.filter(grade__name=grade)

return render(request,'index.html',locals())
else:
grade = models.Grade.objects.all()
# return render(request, 'index.html', locals())

return render(request, 'index.html', locals())


def grade_up(request,stu_id):
stu = models.Student.objects.get(pk=stu_id) # 拿到id 查到数据
id_ = stu.grade_id # 保存班级id
gra = models.Grade.objects.get(pk=id_) # 查到班级
if gra.name == '小班':
grade = models.Grade.objects.get(name='中班') # 判断班级 并升班
stu.grade=grade
stu.save()
elif gra.name == '中班':
grade = models.Grade.objects.get(name='大班')
stu.grade = grade
stu.save()
else:
big = True
return render(request,'user.html',locals())
return redirect(reverse('index'))

def out_login(request): #
# request.session.clear()
del request.session['user']
a = request.session.get('user')
print(a)
return redirect(reverse('index'))

html:

index:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>


{% if user %}
<a href="/outlogin/">退出登录</a>
{{ stu.name }}小朋友<br>
{{ grade }}:{% for c in course %}
{{ c.name }}
{% endfor %}<br>
{% if big %}
无法升班
{% else %}
<a href="/grade_up/{{ stu.id }}">升班</a>
{% endif %}

{% else %}
<table border="1" cellspacing="1">
<tr>
<th><font color="red">年级</font></th>
<th colspan="3"><font color="red">课程</font></th>
</tr>
{% for g in grade %}
<tr>
<td>{{ g.name }}</td>
{% for c in g.course_set.all %}
<td>{{ c.name }}</td>
{% endfor %}
</tr>

{% endfor %}
</table>


{% endif %}
</body>
</html>

add_course:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="post">
{% csrf_token %}
<select name="grade">
{% for g in grade %}
<option value="{{ g.id }}">{{ g.name }}</option>
{% endfor %}
</select>
<input type="text" name="name">课程
<button type="submit">添加</button>
</form>
</body>
</html>

add_grade:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="" method="post">
{% csrf_token %}
<input type="text" name="name">
<button type="submit">添加</button>{{ flash }}
</form>
</body>
</html>

猜你喜欢

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