| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- import json
- from django.http import HttpResponse
- from django.shortcuts import render, redirect
- from demo.forms import UserForm
- from demo.models import Subject, Teacher, User, proto
- def login(request):
- if request.method.lower() == 'get':
- return render(request, 'demo/login.html', {})
- else:
- username = request.POST['username']
- try:
- user = User.objects.get(username__exact=username)
- password = request.POST['password']
- hasher = proto.copy()
- hasher.update(password.encode('utf-8'))
- if hasher.hexdigest() == user.password:
- request.session['user'] = user
- return redirect('sub')
- except User.DoesNotExist:
- pass
- return render(request, 'demo/login.html',
- {'hint': '用户名或密码错误'})
- def register(request):
- form = UserForm()
- if request.method.lower() == 'get':
- return render(request, 'demo/register.html', {'f': form})
- else:
- ctx = {}
- try:
- form = UserForm(request.POST)
- ctx['f'] = form
- if form.is_valid():
- form.save(commit=True)
- ctx['hint'] = '注册成功请登录!'
- return render(request, 'demo/login.html', ctx)
- except:
- ctx['hint'] = '注册失败, 请重新尝试!'
- return render(request, 'demo/register.html', ctx)
- def check_username(request):
- ctx = {}
- if 'username' in request.GET:
- username = request.GET['username']
- try:
- User.objects.get(username__exact=username)
- ctx['valid'] = False
- except User.DoesNotExist:
- ctx['valid'] = True
- return HttpResponse(json.dumps(ctx),
- content_type='application/json; charset=utf-8')
- def show_subjects(request):
- if 'user' in request.session and request.session['user']:
- ctx = {'subjects_list': Subject.objects.all()}
- return render(request, 'demo/subject.html', ctx)
- else:
- return render(request, 'demo/login.html',
- {'hint': '请先登录!'})
- def show_teachers(request, no):
- if 'user' in request.session and request.session['user']:
- teachers = Teacher.objects.filter(subject__no=no)\
- .select_related('subject')
- ctx = {'teachers_list': teachers}
- return render(request, 'demo/teacher.html', ctx)
- else:
- return render(request, 'demo/login.html',
- {'hint': '请先登录!'})
- def make_comment(request, no):
- ctx = {'code': 200}
- if 'user' in request.session and request.session['user']:
- user = request.session['user']
- if user.counter > 0:
- try:
- teacher = Teacher.objects.get(pk=no)
- if request.path.startswith('/good'):
- teacher.good_count += 1
- ctx['result'] = f'好评({teacher.gcount})'
- else:
- teacher.bad_count += 1
- ctx['result'] = f'差评({teacher.bcount})'
- teacher.save()
- user.counter -= 1
- User.objects.filter(username__exact=user.username)\
- .update(counter=user.counter)
- request.session['user'] = user
- except Teacher.DoesNotExist:
- ctx['code'] = 404
- else:
- ctx['code'] = 403
- ctx['result'] = '票数不足'
- else:
- ctx['code'] = 302
- ctx['result'] = '请先登录'
- return HttpResponse(json.dumps(ctx),
- content_type='application/json; charset=utf-8')
|