Django框架 + Mysql 班级管理系统(多表联查)

这里运用了后端刷新页面来实现用户的一些操作,话不多说,直接上代码

首先咱们要先创建一个项目目录

在这里插入图片描述

进入我们电脑cmd 终端中,我这里使用的是gitbash,cd到我们的项目目录中

在这里插入图片描述

接下来的操作非常重要


创建我们的项目名称classMS(classmanage system)
在这里插入图片描述
cd到我们的项目中
在这里插入图片描述
进来后我们创建一个template的文件夹
在这里插入图片描述
创建我们的应用名称,这里是myapply
在这里插入图片描述
注意不要忘记迁移数据库
在这里插入图片描述

在这里插入图片描述
还没结束,这时打开我们的项目classMS(我这里用的是pyc), 此时略过很多字,(根据我们的上上片文章来配置)


models.py下定义我们的数据库
Django框架 + Mysql 班级管理系统(多表联查)_第1张图片
这里我们有了两个表,ForeignKey为Students的外键,此时一个班级对应多个学生

**项目目录下classMS *

     __init__.py下配置我们数据库

Django框架 + Mysql 班级管理系统(多表联查)_第2张图片

settings.py下配置:

Django框架 + Mysql 班级管理系统(多表联查)_第3张图片
Django框架 + Mysql 班级管理系统(多表联查)_第4张图片
Django框架 + Mysql 班级管理系统(多表联查)_第5张图片
Django框架 + Mysql 班级管理系统(多表联查)_第6张图片

 urls.py下配置
 **注意 myapply中的urls.py需要我们手动创建**

Django框架 + Mysql 班级管理系统(多表联查)_第7张图片


找到我们的应用myapply

urls.py下

Django框架 + Mysql 班级管理系统(多表联查)_第8张图片

views.py下
	from django.shortcuts import render, redirect, reverse
	from django.http import HttpResponse, HttpResponseRedirect
	from django.views.decorators.csrf import csrf_exempt
	from .models import Grades, Students
	
	# Create your views here.
	
	
	# TODO: 这里是主页
	def home_page(request):
	    cookie = request.COOKIES.get('id')
	    list_g = Grades.objects.all()
	    if cookie:
	        obj = list_g.get(id=cookie)
	        gname = obj.gname
	    else:
	        gname = list_g[0].gname
	        obj = list_g[0]
	    list_s = Students.objects.filter(grade=obj)
	    return render(request, 'classms/index.html', {'list_g': list_g, 'list_s': list_s})
	
	
	# TODO: 添加班级
	@csrf_exempt
	def add_grade(request):
	    gname = request.POST['gname']
	    list_g = Grades.objects.filter(gname=gname)
	    if not list_g:
	        last_g = Grades.objects.last()
	        if last_g:
	            gid = str(int(last_g.gid) + 1)
	        else:
	            gid = '10001'
	        obj = Grades(gid=gid, gname=gname)
	        obj.save()
	        return redirect(reverse('class_ms:home'))
	    else:
	        print('dd')
	        return HttpResponse(u'班级已存在')
	
	
	# TODO; 添加学生
	def add_stu(request):
	    sname = request.POST['sname']
	    gname = request.POST['gname']
	    find_g = Grades.objects.filter(gname=gname)
	    if find_g:
	        last_s = Students.objects.all().last()
	        if last_s:
	            sid = str(int(last_s.sid)+1)
	        else:
	            sid = '20180001'
	        obj = Students(sid=sid, sname=sname, grade=find_g[0])
	        obj.save()
	        return redirect(reverse('class_ms:home'))
	    else:
	        print('ff')
	        return HttpResponse(u'输入的班级不存在')
	
	
	# TODO: 更改学生信息
	def update_stu(request):
	    sid = request.POST['sid']
	    sname = request.POST['sname']
	    gname = request.POST['gname']
	    find_g = Grades.objects.filter(gname=gname)
	    if find_g:
	        Students.objects.filter(sid=sid).update(sname=sname, grade=find_g[0])
	        return redirect(reverse('class_ms:home'))
	    else:
	        return HttpResponse(u'输入的班级不存在')
	
	
	# TODO: 删除学生
	def delete_stu(request):
	    sid = request.GET.get('pk')
	    res = Students.objects.filter(sid=sid)
	    if res:
	        res.delete()
	        return redirect(reverse('class_ms:home'))
	    else:
	        return HttpResponse(u'删除失败')
	
	
	# TODO: cookie切换班级
	def change_grade(request, id):
	    res = HttpResponseRedirect(reverse('class_ms:home'))
	    res.set_cookie('id', id, 50)
	    return res

templates下html

	
	{% load staticfiles %}
	
	
	    
	    首页
	    
	    
	    
	    
	
	
	
{% if list_g %} {% else %} 请添加班级 {% endif %}
{% if list_g %}
    {% for item in list_s %}
    • {{ item.sid }} {{ item.sname }} {{ item.grade.gname }} 删除
  • {% endfor %}
{% endif %}
{% csrf_token %}

收工, django+mysql 班级管理系统基本的已经实现

你可能感兴趣的:(Django框架 + Mysql 班级管理系统(多表联查))