这里运用了后端刷新页面来实现用户的一些操作,话不多说,直接上代码
首先咱们要先创建一个项目目录
进入我们电脑cmd 终端中,我这里使用的是gitbash,cd到我们的项目目录中
接下来的操作非常重要
创建我们的项目名称classMS(classmanage system)
cd到我们的项目中
进来后我们创建一个template的文件夹
创建我们的应用名称,这里是myapply
注意不要忘记迁移数据库
还没结束,这时打开我们的项目classMS(我这里用的是pyc), 此时略过很多字,(根据我们的上上片文章来配置)
models.py下定义我们的数据库
这里我们有了两个表,ForeignKey为Students的外键,此时一个班级对应多个学生
**项目目录下classMS *
__init__.py下配置我们数据库
settings.py下配置:
urls.py下配置
**注意 myapply中的urls.py需要我们手动创建**
找到我们的应用myapply
urls.py下
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">×</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">×</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">×</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 班级管理系统基本的已经实现