django多对一,三张表之间的关系

django多对一,三张表之间的关系

def index(request):
    user_name = request.session.get('user')   # 获取用户登录信息
    user = User.objects.filter(account=user_name).first()
    print(user)
    if user:
        gradee = Grade.objects.filter(name=user.user_grade).first()   # 获取用户所属年级
        coursee = Course.objects.filter(grade=gradee.id).all()   # 获取用户所属班级课程
        print(gradee)
    else:
        grade = Grade.objects.all()
        course = Course.objects.all()
    return render(request,'index.html',locals())

# 退出
def logout(request):
    del request.session['user']   # 删除用户的session
    return redirect('/')

# 添加年级
def add_grade(request):
    if request.method == 'POST':
        name = request.POST.get('name')
        if not name:
            error = '输入框不能为空!'
            return render(request,'add_grade.html',locals())
        else:
            grade = Grade.objects.all()
            if len(grade) >= 3:
                error = '年级添加完毕!'
                return render(request,'add_grade.html',locals())
            else:
                Grade.objects.create(name=name)
                return redirect('/')

    return render(request,'add_grade.html')


# 添加课程
def add_course(request):
    grade = Grade.objects.all()
    if request.method == 'POST':
        name = request.POST.get('name')
        gid = request.POST.get('grade')
        print(gid)
        grade = Grade.objects.get(id=gid)
        if not all([name,gid]):
            error = '输入框不能为空!'
            return render(request,'add_course.html',locals())
        else:
            course = Course.objects.all().count()  #获取课程个数
            if course >= 9:
                error = '所有课程已添加完毕!'
                return render(request,'add_grade.html',locals())
            else:
                Course.objects.create(name=name,grade=grade)
                return redirect('/')

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


# 添加用户(用户注册)
def add_user(request):
    grade = Grade.objects.all()
    if request.method == 'POST':
        name = request.POST.get('name')
        account = request.POST.get('account')
        password = request.POST.get('password')
        user_grade = request.POST.get('grade')

        if not all([name,account,password,user_grade]):
            error = '输入框不能为空!'
            return render(request,'add_user.html',locals())
        else:
            User.objects.create(name=name,account=account,password=password,user_grade=user_grade)  # 用户信息入库
            return redirect('/')

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


# 登录
def login(request):
    if request.method == 'POST':
        account = request.POST.get('account')
        password = request.POST.get('password')
        if not all([account,password]):
            error = '输入框不能为空!'
            return render(request,'login.html',locals())
        else:
            user = User.objects.filter(account=account,password=password).first()  # 查询输入的用户信息是否在用户表中
            if user:
                request.session['user'] = account   # 将用户信息存入session
                return redirect('/')
            else:
                error = '用户名或密码错误,请重新输入!'
                return render(request,'login.html',locals())

    return render(request,'login.html')


# 提升班级
def up_grade(request):
    user_name = request.session.get('user')
    user = User.objects.filter(account=user_name).first()   # 获取用户信息
    if user:
        grade_name = user.user_grade   # 获取用户班级
        print(grade_name)
        if grade_name == '小班':        
            user.user_grade = "中班"  # 修改用户班级
            user.save()
        elif grade_name == '中班':
            user.user_grade = "大班"
            user.save()
    return redirect('/')
   
<html>
 {% if user_name %}
    <h4>{{ user_name }}小朋友</h4>
    <a href="/logout/">退出</a><br /><br />

    {{ gradee }}

    {% for c in coursee %}
    {{ c.name }}
    {% endfor %} <br /><br />
    {% if user.user_grade != '大班'%}
    <a href="/up_grade/"><button>点击提升班级</button></a>
    {% endif %} {% else %}
    <a href="/add_grade/">添加年级</a><br />
    <a href="/add_course/">添加课程</a><br />
    <a href="/add_user/">添加用户</a><br />
    <a href="/login/">用户登录</a><br />

    <table border="1px">
      <tr>
        <th>年级</th>
        <th colspan="3">课程</th>
      </tr>

      {% for g in grade %}
      <tr>
        <td>{{ g.name }}</td>
        {% for c in course %} {% if c.grade.id == g.id %}
        <td>{{ c.name }}</td>
        {% endif %} {% endfor %}
      </tr>
      {% endfor %}
    </table>

    {% endif %}
  </body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值