周末没事自己写了个班级管理系统,虽然简单,但也算个前期学习的总结吧

from django.db import models

# Create your models here.
class Banji(models.Model):
grade = models.CharField(max_length=32,unique=True) class Student(models.Model):
name = models.CharField(max_length=32,unique=True)
banji = models.ForeignKey(to="Banji",on_delete=models.CASCADE) class Teacher(models.Model):
name = models.CharField(max_length=32,unique=True)
banji = models.ManyToManyField("Banji")

models

"""class_crm URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url
from django.contrib import admin from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
# 班级
url(r'^banji_list/', views.banji_list),
url(r'^add_banji/', views.add_banji),
url(r'^del_banji/', views.del_banji),
url(r'^edit_banji/', views.edit_banji), url(r'^student_list/', views.student_list),
url(r'^add_student/', views.add_student),
url(r'^del_student/', views.del_student),
url(r'^edit_student/', views.edit_student), url(r'^teacher_list/', views.teacher_list),
url(r'^add_teacher/', views.add_teacher),
url(r'^del_teacher/', views.del_teacher),
url(r'^edit_teacher/', views.edit_teacher),
]

urls

from django.shortcuts import render,HttpResponse,redirect
from app01 import models
# Create your views here.
def banji_list(request):
print(111)
banji_list = models.Banji.objects.all().order_by("id")
print(222)
print(banji_list)
return render(request,"banji_list.html",{"banji_list":banji_list}) def add_banji(request):
if request.method == "POST":
name = request.POST.get("new_name")
if not name:
return render(request,"add_banji.html",{"err_name":name,"err_msg":"不能为空"})
add_obj = models.Banji.objects.filter(grade=name)
if add_obj:
return render(request,"add_banji.html",{"err_name":name,"err_msg":"已存在"})
models.Banji.objects.create(grade=name)
return redirect("/banji_list/")
return render(request,"add_banji.html") def del_banji(request):
del_id = request.GET.get("id")
del_list = models.Banji.objects.filter(id=del_id)
del_list.delete()
return redirect("/banji_list/") def edit_banji(request):
edit_id = request.GET.get("id")
edit_obj = models.Banji.objects.get(id=edit_id)
if request.method == "POST":
name = request.POST.get("new_name")
if not name:
return render(request, "edit_banji.html", {"edit_obj": edit_obj,"err_msg":"不能为空"})
mod_obj = models.Banji.objects.filter(grade=name)
if mod_obj:
return render(request, "edit_banji.html", {"edit_obj": edit_obj,"err_msg":"重复了"})
if edit_obj and name and not mod_obj:
edit_obj.grade = name
edit_obj.save()
return redirect("/banji_list/")
if edit_obj:
return render(request,"edit_banji.html",{"edit_obj":edit_obj})
return HttpResponse("不存在!!!") # 学生管理
def student_list(request):
student_list = models.Student.objects.all().order_by("id")
return render(request,"student_list.html",{"student_list":student_list}) def add_student(request):
banji_list = models.Banji.objects.all()
if request.method == "POST":
name = request.POST.get("new_name")
if not name:
return render(request, "add_student.html", {"banji_list": banji_list,"err_name":name,"err_msg":"不能为空"})
add_obj = models.Student.objects.filter(name=name)
if add_obj:
return render(request, "add_student.html", {"banji_list": banji_list,"err_name":name,"err_msg":"此学生已存在"})
banji_id = request.POST.get("banji_id")
models.Student.objects.create(name=name,banji_id=banji_id)
return redirect("/student_list/")
return render(request,"add_student.html",{"banji_list":banji_list}) def del_student(request):
del_id = request.GET.get("id")
del_obj = models.Student.objects.get(id=del_id)
del_obj.delete()
return redirect("/student_list/") def edit_student(request):
edit_id = request.GET.get("id")
edit_obj = models.Student.objects.filter(id=edit_id)
banji_list = models.Banji.objects.all() if request.method == "POST":
name = request.POST.get("new_name")
banji_id = request.POST.get("banji_id")
if not name:
return render(request, "edit_student.html", {"edit_obj": edit_obj, "banji_list": banji_list,"err_msg":"不能为空"})
edit_obj = edit_obj[0]
edit_obj.name = name
edit_obj.banji_id = banji_id
edit_obj.save()
return redirect("/student_list/")
return render(request,"edit_student.html",{"edit_obj":edit_obj[0],"banji_list":banji_list}) def teacher_list(request):
teacher_list = models.Teacher.objects.all()
return render(request,"teacher_list.html",{"teacher_list":teacher_list}) def add_teacher(request):
banji_list = models.Banji.objects.all()
if request.method == "POST":
name = request.POST.get("new_name")
add_obj = models.Teacher.objects.filter(name=name)
if add_obj:
return render(request, "add_teacher.html", {"banji_list": banji_list,"err_name":name,"err_msg":"已存在"})
banji_id = request.POST.getlist("banji_id")
new_tea = models.Teacher.objects.create(name=name)
new_tea.banji.set(banji_id)
return redirect("/teacher_list/")
return render(request,"add_teacher.html",{"banji_list":banji_list}) def del_teacher(request):
del_id = request.GET.get("id")
del_obj = models.Teacher.objects.filter(id=del_id)
del_obj.delete()
return redirect("/teacher_list/") def edit_teacher(request):
edit_id = request.GET.get("id")
edit_obj = models.Teacher.objects.filter(id=edit_id)
banji_list = models.Banji.objects.all()
if request.method == "POST":
name = request.POST.get("new_name")
banji_id = request.POST.getlist("banji_id")
edit_obj = edit_obj[0]
edit_obj.name = name
edit_obj.save()
edit_obj.banji.set(banji_id)
return redirect("/teacher_list/")
return render(request,"edit_teacher.html",{"banji_list":banji_list,"edit_obj":edit_obj[0]})

Views

数据库表关系如下:

总结一些方法:

get为获取单个对象,找不到会报错,所以如果用的话最好try一下

filter获取的是query set集合,也可以理解为对象列表

getlist获取所有

HttpResponse('字符串')   ——》 页面显示字符串的内容
  render(request,'模板的名字',{k1:v1})  ——》 整个HTML文件返回给浏览器
  redirect('/index/')    跳转  重定向  响应头  location:/index/

python终极篇 --- django---班级管理系统的更多相关文章

  1. python 终极篇 --- django 视图系统

    Django的View(视图) 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错误, ...

  2. python终极篇 ---django 模板系统

                                                模板系统                                                . MV ...

  3. python 终极篇 ---django 认证

    Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...

  4. python 终极篇 --- django 路由系统

                          URL配置                        基本格式: from django.conf.urls import url urlpattern ...

  5. python终极篇 --- django 初识

    1. 下载: 命令行: pip install django==1.11.15 pip install -i 源 django==1.11.15 pycharm settings 解释器 点+号 输入 ...

  6. python web篇 Django centos 命令版

    新建立一个虚拟环境,与其他python 包隔开互不影响 首先新建立一个目录,命名为xx, python3 下操作 $:python -m venv ll_env 注意在有多个Python环境下,使用 ...

  7. python 终极篇 --- form组件 与 modelForm

                                                           form组件                                       ...

  8. python 终极篇 ---- 中间件

    中间件------------------------>>>>>>>>>>>>> 中间件是一个用来处理django的响应与 ...

  9. python 终极篇 cookie与session

    ()cookie与session---------->>>>>>>>>>>>>>>>>>&g ...

随机推荐

  1. Android学习笔记_35_PopupWindow泡泡窗口的实现及GridView应用

    1.PopupWindow是一个可以显示在当前Activity之上的浮动容器,PopupWindow弹出的位置是能够改变的,按照有无偏移量,可以分为无偏移和有便宜两种:按照参照对象的不同又可以分为两种 ...

  2. JQuery 禁用后退按钮

    jQuery(document).ready(function () { if (window.history && window.history.pushState) { $(win ...

  3. 时间戳转化为时间&&截取时间的年月日

    时间戳转化为正常的时间格式 function formatDate(date, fmt) { if (/(y+)/.test(fmt)) { // 在这里 date.getFullYear() + ' ...

  4. linux 中$ 意思

    grep -n sh$ text.txt   查找文件内容中以 Sh 结尾. grep -n ^a text.txt    文件文件内容中以 a 开头. grep -n ^$ text.txt     ...

  5. 插入排序_C语言_数组

    插入排序_C语言_数组 #include <stdio.h> void insertSort(int *); int main(int argc, const char * argv[]) ...

  6. Sass学习日志

    一.什么是SASS SASS是一中CSS的开发工具,提供了许多便利的写法,大大节约了设计者们的时间,使得CSS的开发,变得简单和可维护.本文总结了SASS的主要方法.我们的目标是,有了这篇文章,日常的 ...

  7. DbUtils: JDBC Utility Component Examples翻译

    DbUtils:JDBC实用组件实例 这一页提供了一些展示如何使用DbUtils的示例. 基本用法 DbUtils是一个非常小的类库,因此浏览完所有类的javadoc不会花费很长时间.DbUtils的 ...

  8. python 用selenuim判断页面是否全部加载完成,并且加上最大时长,超过时长报错

    STR_READY_STATE = '' time_start = time.time() while STR_READY_STATE != 'complete': time.sleep(0.001) ...

  9. Eclipse工具查看依赖的JDK、Maven源码方法

    一.Eclipse软件里查看JDK依赖源码 1.Window->Preferences->Java->Installed JREs 2.如图: 二.Eclipse软件里查看Maven ...

  10. ubuntu系統如何啟動root用戶登陸?

    之前分享過關於這個問題的文章,現在自己在分享一個關於這個問題的文章給大家.為了學習Linux,一氣之下把win10的換成了ubuntu的系統.安裝就不給大家介紹了(網上很多教程). 在我們安裝好之後, ...