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

9 months ago
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')
9 months ago
if role == '0': # 如果身份是学生
9 months ago
result = models.StuInfo.objects.filter(username=username, password=pwd)
9 months ago
9 months ago
if result.exists():
return redirect('student_index', sid=result.first().id)
else:
return HttpResponse('failed')
9 months ago
elif role == '1': # 如果身份是管理员
9 months ago
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)
9 months ago
# 添加选课信息
9 months ago
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)