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

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

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

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

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

接下来的操作非常重要


创建我们的项目名称classMS(classmanage system)
Django框架 + Mysql 班级管理系统(多表联查)
cd到我们的项目中
Django框架 + Mysql 班级管理系统(多表联查)
进来后我们创建一个template的文件夹
Django框架 + Mysql 班级管理系统(多表联查)
创建我们的应用名称,这里是myapply
Django框架 + Mysql 班级管理系统(多表联查)
注意不要忘记迁移数据库
Django框架 + Mysql 班级管理系统(多表联查)

Django框架 + Mysql 班级管理系统(多表联查)
还没结束,这时打开我们的项目classMS(我这里用的是pyc), 此时略过很多字,(根据我们的上上片文章来配置)


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

**项目目录下classMS *

     __init__.py下配置我们数据库

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

settings.py下配置:

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

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

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


找到我们的应用myapply

urls.py下

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

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

	<!DOCTYPE html>
	{% load staticfiles %}
	<html lang="en">
	<head>
	    <meta charset="UTF-8">
	    <title>首页</title>
	    <link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
	    <link rel="stylesheet" href="{% static 'css/reset.css' %}">
	    <script src="{% static 'js/jquery-3.3.1.js' %}"></script>
	    <script src="{% static 'js/bootstrap.js' %}"></script>
	</head>
	<body>
	<div class="wrapper">
	    <div class="header"></div>
	    <div class="content container-fluid">
	        <div class="row">
	            <div class="col-md-3">
	                <button class="btn bg-primary" data-toggle="modal" data-target="#addc">添加班级</button>
	
	            </div>
	            <div class="col-md-9">
	                <button class="btn bg-primary" data-toggle="modal" data-target="#adds">添加学生</button>
	            </div>
	        </div>
	        <div class="row">
	            <div class="col-md-3">
	                {% if list_g %}
	                    <ul>
	                        {% for item in list_g %}
	                            <li>
	                                <a href="{% url 'class_ms:gchange' item.id %}">
	                                    <ul>
	                                        <li>
	                                            <span>{{ item.gname }}</span>
	                                        </li>
	                                    </ul>
	                                </a>
	                            </li>
	                        {% endfor %}
	                    </ul>
	                {% else %}
	                    <span>请添加班级</span>
	                {% endif %}
	            </div>
	            <div class="col-md-9">
	                {% if list_g %}
	                    <ul>
	                        {% for item in list_s %}
	                            <li>
	                                <ul>
	                                    <li>
	                                        <span>{{ item.sid }}</span>
	                                        <span>{{ item.sname }}</span>
	                                        <span>{{ item.grade.gname }}</span>
	                                        <input type="button" class="btn btn-primary" data-toggle="modal" data-target="#{{ item.sid }}" value="编辑" style="padding: 2px;">
	                                        <a href="{% url 'class_ms:deletestu' %}?pk={{ item.sid }}" type="button" class="btn btn-primary" value="编辑" style="padding: 2px;">删除</a>
	                                        <!-- 模态框(Modal) -->
	                                        <div class="modal fade" id="{{ item.sid }}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
	                                            <div class="modal-dialog">
	                                                <div class="modal-content">
	                                                    <div class="modal-header">
	                                                        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
	                                                        <h4 class="modal-title" id="myModalLabel">编辑信息</h4>
	                                                    </div>
	                                                    <div class="modal-body">
	                                                        <form action="{% url 'class_ms:updatestu' %}" method="post">
	                                                            {% csrf_token %}
	                                                            <input type="text" name="sname" value="{{ item.sname }}">
	                                                            <input type="text" name="gname" value="{{ item.grade.gname }}">
	                                                            <input type="text" name="sid" value="{{ item.sid }}" hidden>
	                                                            <input type="submit" class="btn bg-danger" value="保存">
	                                                        </form>
	                                                    </div>
	                                                </div><!-- /.modal-content -->
	                                            </div><!-- /.modal -->
	                                        </div>
	                                    </li>
	                                </ul>
	
	                            </li>
	                        {% endfor %}
	                    </ul>
	                {% endif %}
	            </div>
	        </div>
	    </div>
	    <!-- 模态框(Modal) -->
	    <div class="modal fade" id="addc" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
	        <div class="modal-dialog">
	            <div class="modal-content">
	                <div class="modal-header">
	                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
	                    <h4 class="modal-title" id="myModalLabel">添加班级</h4>
	                </div>
	                <div class="modal-body">
	                    <form action="{% url 'class_ms:addg' %}" method="post">
	                        <input type="text" name="gname" placeholder="班级名称" required>
	                        <input type="submit" class="btn bg-danger" value="保存">
	                    </form>
	                </div>
	            </div><!-- /.modal-content -->
	        </div><!-- /.modal -->
	    </div>
	     <!-- 模态框(Modal) -->
	    <div class="modal fade" id="adds" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
	        <div class="modal-dialog">
	            <div class="modal-content">
	                <div class="modal-header">
	                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
	                    <h4 class="modal-title" id="myModalLabel">添加学生</h4>
	                </div>
	                <div class="modal-body">
	                    <form action="{% url 'class_ms:adds' %}" method="post">
	                        {% csrf_token %}
	                        <input type="text" name="sname" placeholder="学生姓名" required>
	                        <input type="text" name="gname" placeholder="班级名称" required>
	                        <input type="submit" class="btn bg-danger" value="保存">
	                    </form>
	                </div>
	            </div><!-- /.modal-content -->
	        </div><!-- /.modal -->
	    </div>
	</div>
	<form action="#">
	    {% csrf_token %}
	</form>
	</body>
	</html>

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

相关文章:

  • 2021-12-17
  • 2021-12-31
  • 2022-12-23
  • 2021-09-30
  • 2021-11-23
  • 2021-09-28
  • 2022-01-26
  • 2021-12-26
猜你喜欢
  • 2022-12-23
  • 2021-06-13
  • 2021-12-07
  • 2021-11-15
  • 2021-07-05
  • 2021-12-08
  • 2021-11-20
相关资源
相似解决方案