Further improvement of teacher functions

-Query student information
lrs-branch
lrs 1 year ago
parent f0f04b1320
commit cc79137b3c

@ -27,4 +27,5 @@ urlpatterns = [
path('course/', include(("course.urls", "course"), namespace="course")),
path('login', login),
path('userinfo', get_user_info),
path('admin/', include(("Eduadmin.urls", "admin"), namespace="admin")),
]

@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
# Time : 2023/9/12 9:37
# Author : lirunsheng
# User : l'r's
# Software: PyCharm
# File : urls.py
from django.urls import path
from .views import *
urlpatterns = [
path("teachers/", teacher_manage),
]

@ -1,3 +1,102 @@
from django.shortcuts import render
# Create your views here.
from django.http import JsonResponse
from teacher.models import Teacher
from django.views.decorators.csrf import csrf_exempt
from io import BytesIO
from django.http.multipartparser import MultiPartParser
from django.http import QueryDict
from course.models import Course, SC
from Student.models import Student
from django.db.models import Q
from django.db.models import Subquery, OuterRef
from django.core.exceptions import ObjectDoesNotExist
from EduSystemServer.utils import ResponseUtil
@csrf_exempt
def teacher_manage(request): # 教师个人信息修改
if request.method == "POST":
username = request.POST.get('username')
password = request.POST.get('password')
name = request.POST.get('name')
sex = request.POST.get('sex')
title = request.POST.get('title')
education = request.POST.get('education')
dept = request.POST.get('dept')
if (username and password and name and sex
and title and education and dept):
teacher = Teacher()
teacher.username = username
teacher.password = password
teacher.name = name
teacher.sex = sex
teacher.title = title
teacher.education = education
teacher.dept = dept
teacher.save()
response = ResponseUtil.ok(teacher.to_dict(), "老师信息插入成功")
return JsonResponse(response)
else:
response = ResponseUtil.error("老师信息插入未成功,存在空值,请你仔细检测并上传")
return JsonResponse(response)
elif request.method == "GET":
name = request.GET.get('name')
sex = request.GET.get('sex')
title = request.GET.get('title')
education = request.GET.get('education')
dept = request.GET.get('dept')
# 定义空查询条件
conditions = Q()
if name:
conditions &= Q(name=name)
if sex:
conditions &= Q(sex=sex)
if title:
conditions &= Q(title=title)
if education:
conditions &= Q(education=education)
if dept:
conditions &= Q(dept=dept)
# 添加非空查询条件至基本查询集
query = Teacher.objects.filter(conditions)
data = query.values() # 将 QuerySet 对象转换为字典列表
data = list(data) # 转换为列表以便序列化为 JSON
print(query)
response = ResponseUtil.ok(data, "老师信息查询成功")
return JsonResponse(response)
elif request.method == "DELETE":
parser = MultiPartParser(request.META, BytesIO(request.body), request.upload_handlers, request.encoding)
posdict = parser.parse()
print(posdict)
tid = int(posdict[0]['tid'])
print(tid)
try:
info = Teacher.objects.filter(tid=tid).get().to_dict()
Teacher.objects.filter(tid=tid).delete()
response = ResponseUtil.ok(info, "老师信息删除成功")
return JsonResponse(response)
except:
response = ResponseUtil.error("删除失败,未找到老师信息!")
return JsonResponse(response)
elif request.method == 'PUT':
put = MultiPartParser(request.META, request, request.upload_handlers, request.encoding).parse()
# request.PUT = put[0]
print(put)
tid = put[0]['tid']
name = put[0]['name']
sex = put[0]['sex']
title = put[0]['title']
education = put[0]['education']
dept = put[0]['dept']
if name and sex and title and education and dept:
Teacher.objects.filter(tid=tid).update(name=name,sex=sex,title=title)
Teacher.objects.filter(tid=tid).update(education=education,dept=dept)
data = Teacher.objects.filter(tid=tid)[0].to_dict()
response = ResponseUtil.ok(data, "修改老师信息成功!")
return JsonResponse(response)
else:
response = ResponseUtil.error("修改信息有误!")
return JsonResponse(response)

@ -7,7 +7,6 @@ from django.views.decorators.csrf import csrf_exempt
from io import BytesIO
from django.http.multipartparser import MultiPartParser
@csrf_exempt
def courses(request):
if request.method == "POST":
@ -30,7 +29,7 @@ def courses(request):
for item in filtered:
data.append(item.to_dict())
elif c_name:
filtered = Course.objects.filter(c_name=c_name)
filtered = Course.objects.filter(name=c_name)
for item in filtered:
data.append(item.to_dict())
elif c_type:

@ -16,5 +16,6 @@ urlpatterns = [
path('query/',query_student_information),
path('course/',teaching_resources),
path('selection/',course_selection),
path('management/',student_management)
path('management/',student_management),
path('select/',SC_selection)
]

@ -100,24 +100,24 @@ def delete(request):
@csrf_exempt
def teaching_resources(request): # 课程查询
if request.method == 'POST':
cid = int(request.POST.get('cid'))
cid = request.POST.get('cid')
name = request.POST.get('name')
type = request.POST.get('type')
credit = request.POST.get('credit')
tid = int(request.POST.get('tid'))
tid = request.POST.get('tid')
teacher_name = request.POST.get('t_name')
# 定义空子字典查询条件
conditions = {}
if cid:
conditions.update({'cid': cid}) # 追加信息
conditions.update({'cid': int(cid)}) # 追加信息
if name:
conditions.update({'name': cid})
conditions.update({'name': name})
if type:
conditions.update({'type': cid})
conditions.update({'type': type})
if credit:
conditions.update({'credit': cid})
conditions.update({'credit': credit})
if tid:
conditions.update({'tid': cid})
conditions.update({'tid': int(tid)})
if teacher_name:
conditions.update({'teacher_name': teacher_name})
def check_subdict_exists(dictionary, subdict): # 判断子字典是否存在字典
@ -181,7 +181,7 @@ def query_student_information(request): # 学生信息查询
if name:
conditions &= Q(name=name)
if sid:
conditions &= Q(sid=sid)
conditions &= Q(sid=int(sid))
if sex:
conditions &= Q(sex=sex)
if grade:
@ -206,8 +206,8 @@ def query_student_information(request): # 学生信息查询
@csrf_exempt
def student_performance_management(request): # 学生成绩管理
if request.method == "POST": # 学生成绩录入
sid = request.POST.get('sid')
cid = request.POST.get('cid')
sid = int(request.POST.get('sid'))
cid = int(request.POST.get('cid'))
middle_grade = float(request.POST.get('middle_grade'))
end_grade = float(request.POST.get('end_grade'))
if middle_grade <= 100 and middle_grade >= 0 and end_grade <= 100 and end_grade >= 0:
@ -242,11 +242,11 @@ def student_performance_management(request): # 学生成绩管理
elif s_name:
data.append(SC.objects.filter(sid__name=s_name))
elif sid and cid:
data.append(SC.objects.filter(sid=sid, cid=cid))
data.append(SC.objects.filter(sid=int(sid), cid=int(cid)))
elif sid:
data.append(SC.objects.filter(sid=sid))
data.append(SC.objects.filter(sid=int(sid)))
elif cid:
data.append(SC.objects.filter(cid=cid))
data.append(SC.objects.filter(cid=int(cid)))
else:
data.append(SC.objects.all())
response = ResponseUtil.ok(list(data[0].values()), "成绩查询成功")
@ -312,7 +312,7 @@ def course_selection(request): # 选课管理
# 定义空查询条件
conditions = Q()
if cid:
conditions &= Q(cid=cid)
conditions &= Q(cid=int(cid))
if name:
conditions &= Q(name=name)
if type:
@ -320,6 +320,7 @@ def course_selection(request): # 选课管理
if credit:
conditions &= Q(credit=credit)
if tid:
tid = int(tid)
conditions &= Q(tid=tid)
# 添加非空查询条件至基本查询集
query = Course.objects.filter(conditions)
@ -363,7 +364,7 @@ def course_selection(request): # 选课管理
@csrf_exempt
def student_management(request):
if request.method == 'GET':
tid = request.GET.get('tid')
tid = int(request.GET.get('tid'))
# 获取第1个查询表的数据
table1_result = Course.objects.filter(tid__tid=tid)
cids = [item.cid for item in table1_result]
@ -387,9 +388,11 @@ def student_management(request):
# 定义空查询条件
data = []
if cid:
cid = int(cid)
data.append(SC.objects.filter(cid=cid))
else:
# 获取第1个查询表的数据
tid = int(tid)
table1_result = Course.objects.filter(tid__tid=tid)
cids = [item.cid for item in table1_result]
# 获取第二个查询表的数据
@ -433,7 +436,7 @@ def student_management(request):
@csrf_exempt
def SC_selection(request):
if request.method == 'GET':
cid = request.GET.get('cid')
cid = int(request.GET.get('cid'))
table2_result = SC.objects.filter(cid__in=cid)
# for item in table2_result:
# print(item.sid.sid)
@ -452,7 +455,7 @@ def SC_selection(request):
major = request.POST.get('major')
# 定义空查询条件
data = []
data.append(SC.objects.filter(cid=cid))
data.append(SC.objects.filter(cid=int(cid)))
# 获取第三个查询表的数据
# 提取查询结果中的 sid 值
print(data)

Loading…
Cancel
Save