You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

200 lines
6.7 KiB

from django.shortcuts import render, HttpResponse, redirect
from django.forms import ModelForm
from django.contrib import messages
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger # 分页组件
from app01 import models
# Create your views here.
def index(request):
return render(request, 'homepage.html')
def login(request):
if request.method == 'GET':
return render(request, 'login.html', )
if request.method == 'POST':
role = request.POST.get('role')
username = request.POST.get('username')
pwd = request.POST.get('pwd')
if role == '0': # 如果身份是学生
result = models.StuInfo.objects.filter(username=username, password=pwd)
if result.exists():
return redirect('student_index', sid=result.first().id)
else:
return HttpResponse('failed')
elif role == '1': # 如果身份是管理员
result = models.AdminInfo.objects.filter(username=username, password=pwd)
if result.exists():
return redirect('/manage/homepage/')
else:
return HttpResponse('failed')
def manage_homepage(request):
return render(request, 'homepage_admin.html')
def manage_student(request):
search_key = request.GET.get('key', '')
students = models.StuInfo.objects.filter(name__contains=search_key).all()
# 获取当前页数
page = request.GET.get('page')
paginator = Paginator(students, 10)
try:
students = paginator.page(page)
except PageNotAnInteger:
students = paginator.page(1)
except EmptyPage:
students = paginator.page(paginator.num_pages)
return render(request, 'student_manage.html', locals())
def manage_course(request):
search_key = request.GET.get('key', '')
courses = models.CourseInfo.objects.filter(course_name__contains=search_key).all()
# 获取当前页数
page = request.GET.get('page')
paginator = Paginator(courses, 10)
try:
courses = paginator.page(page)
except PageNotAnInteger:
courses = paginator.page(1)
except EmptyPage:
courses = paginator.page(paginator.num_pages)
return render(request, 'course_manage.html',locals())
class StuForm(ModelForm):
class Meta:
model = models.StuInfo
fields = ['username', 'password', 'name', 'gender', 'department']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.fields.values():
field.widget.attrs['class'] = 'form-control'
def add_student(request):
if request.method == 'GET':
form = StuForm()
return render(request, 'student_add.html', {'form': form})
if request.method == 'POST':
form = StuForm(data=request.POST)
if form.is_valid():
form.save()
return redirect('/manage/stu/list/')
else:
return render(request, 'student_add.html', {'form': form})
def edit_student(request, sid):
queryset = models.StuInfo.objects.filter(id=sid).first()
if request.method == 'GET':
form = StuForm(instance=queryset)
return render(request, 'student_edit.html', {'form': form})
if request.method == 'POST':
form = StuForm(data=request.POST, instance=queryset)
if form.is_valid():
form.save()
return redirect('/manage/stu/list/')
else:
return render(request, 'student_edit.html', {'form': form})
def delete_student(request, sid):
models.StuInfo.objects.filter(id=sid).first().delete()
return redirect('/manage/stu/list/')
class CourseForm(ModelForm):
class Meta:
model = models.CourseInfo
fields = ['course_name', 'course_brief', 'class_hour', 'points']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for field in self.fields.values():
field.widget.attrs['class'] = 'form-control'
def add_course(request):
if request.method == 'GET':
form = CourseForm()
return render(request, 'course_add.html', {'form': form})
if request.method == 'POST':
form = CourseForm(data=request.POST)
if form.is_valid():
form.save()
return redirect('/manage/course/list/')
else:
return render(request, 'course_add.html', {'form': form})
def edit_course(request, cid):
queryset = models.CourseInfo.objects.filter(id=cid).first()
if request.method == 'GET':
form = CourseForm(instance=queryset)
return render(request, 'course_edit.html', {'form': form})
if request.method == 'POST':
form = CourseForm(data=request.POST, instance=queryset)
if form.is_valid():
form.save()
return redirect('/manage/course/list/')
else:
return render(request, 'course_edit.html', {'form': form})
def delete_course(request, cid):
models.CourseInfo.objects.filter(id=cid).first().delete()
return redirect('/manage/course/list/')
def manage_select(request):
# 获取当前页数
selects = models.Select.objects.all()
print(selects)
page = request.GET.get('page')
paginator = Paginator(selects, 10)
try:
selects = paginator.page(page)
except PageNotAnInteger:
selects = paginator.page(1)
except EmptyPage:
selects = paginator.page(paginator.num_pages)
return render(request, 'select_manage.html', locals())
def delete_select(request, id):
models.Select.objects.filter(id=id).first().delete()
return redirect('/manage/select/list/')
def student_index(request, sid):
if request.method == 'GET':
queryset = models.CourseInfo.objects.all()
return render(request, 'student_index.html', {'courses': queryset, 'sid': sid})
if request.method == 'POST':
course_id = request.POST.get('cid')
student_id = request.POST.get('sid')
course_obj = models.CourseInfo.objects.get(pk=course_id)
student_obj = models.StuInfo.objects.get(pk=student_id)
# 添加选课信息
student_obj.course.add(course_obj)
return HttpResponse('success')
def student_selected(request, sid):
if request.method == 'GET':
student_obj = models.StuInfo.objects.filter(pk=sid).first()
queryset = student_obj.course.all()
for q in queryset:
print(q)
return render(request, 'student_select.html', {'courses': queryset, 'sid': sid})
# 新增退课
if request.method == 'POST':
course_id = request.POST.get('cid')
student_id = request.POST.get('sid')
models.Select.objects.filter(student_id=student_id,course_id=course_id).delete()
messages.success(request,'退选成功')
return redirect('student_selected', sid=sid)