Django框架 + Mysql 班級管理系統(多表聯查)
阿新 • • 發佈:2018-12-16
這裡運用了後端重新整理頁面來實現使用者的一些操作,話不多說,直接上程式碼
首先咱們要先建立一個專案目錄
進入我們電腦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 班級管理系統基本的已經實現