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
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) |