models页面
from django.db import models
class Grade(models.Model):
    name = models.CharField(max_length=20,verbose_name='年级')
    def __str__(self):
        return self.name
class Course(models.Model):
    name = models.CharField(max_length=20,verbose_name='课程名称')
    grade = models.ForeignKey(Grade,on_delete=models.SET_NULL,null=True,blank=True)
    def __str__(self):
        return self.name
class User(models.Model):
    name = models.CharField(max_length=20,verbose_name='姓名')
    username = models.CharField(max_length=20,verbose_name='用户名')
    password = models.IntegerField(verbose_name='密码')
    grade = models.ForeignKey(Grade,on_delete=models.SET_NULL,null=True,blank=True)
    def __str__(self):
        return self.name
# Create your models here.
from django.shortcuts import render,HttpResponse,redirect
from web import models
def index(request):
    grade = models.Grade.objects.all()
    course = models.Course.objects.all()
    return render(request, 'index.html', locals()) #把变量传到html中
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.User.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':
        grade = models.Grade.objects.all()
        return render(request,'register.html',locals())
    if request.method == 'POST':
        name = request.POST.get('name') #输入名称
        grade = request.POST.get('grade')#选择班级
        username = request.POST.get('username') #输入登录名
        password = request.POST.get('password') #输入登录密码
        re_pwd = request.POST.get('re_pwd') #重复提交密码
        if grade and username and password and re_pwd: #判断是否获取到三个值
            if password == re_pwd: #如果两次输入密码一致
                user_obj = models.User.objects.filter(username=username).first() #查询用户名是否存在
                if user_obj: #如果已经存在
                    return HttpResponse('用户已存在')
                else: #如果都没有存在就将输入的存入数据库
                    models.User.objects.create(name=name,username=username,password=password,grade_id=grade).save()
                    return redirect('/login/') #返回
            else: #如果两次密码输入不一致
                return HttpResponse('两次密码不一致')
        else: #如果有空值
            return HttpResponse('不能有空!')
def show(request): #展示学生页
    user_id = request.session.get('user_id') #取session
    user = models.User.objects.all().filter(id=user_id).first()
    course = models.Course.objects.all()
    grade = models.Grade.objects.all().filter(id=user.grade_id).first()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页展示课程表</title>
</head>
<body>
<table border="1">
    <tr>
        <td><font color="red">年级</font></td>
        <td colspan="3" align="center"><font color="red">课程</font></td>
    </tr>
 {% for i in grade %}
     <tr>
        <td>{{ i.name }}</td>
     {% for x in course %}
         {% if x.grade_id == i.id %}
         <td>{{ x.name }}</td>
         {% endif %}
     {% endfor %}
     </tr>
{% endfor %}
</table>
</body>
</html>
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>
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>
        班级:<select name="grade" id="">
        {% for i in grade %}
        <option value="{{ i.id }}">{{ i.name }}</option>
        {% endfor %}
    </select><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>
show页面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>首页展示</title>
</head>
<body>
   欢迎你, {{ user.name }}小朋友<br>
    {{ grade.name }}
     {% for x in course %}
         {% if x.grade_id == user.grade_id %}
             {{ x.name }}
         {% endif %}
     {% endfor %}
<br>
{% if user.grade_id == 3  %}
   {% else %}
<button><a href="/sheng/">点击提升班级</a></button>
{% endif %}
</body>
</html>
    #通过session查询登录的teacherid
    context = {
        'user' : user,
        'course' : course,
        'grade' : grade
    }
    return render(request, 'show.html', context)
def up(request):
    user_id = request.session.get('user_id')  # 取session
    user = models.User.objects.all().filter(id=user_id).first()
    if user.grade_id <3 :
        user.grade_id =  user.grade_id + 1
        user.save()
    return redirect('/show/')
# Create your views here.
HTML页面
index页面