views.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import json
  2. from django.http import HttpResponse
  3. from django.shortcuts import render, redirect
  4. from demo.forms import UserForm
  5. from demo.models import Subject, Teacher, User, proto
  6. def login(request):
  7. if request.method.lower() == 'get':
  8. return render(request, 'demo/login.html', {})
  9. else:
  10. username = request.POST['username']
  11. try:
  12. user = User.objects.get(username__exact=username)
  13. password = request.POST['password']
  14. hasher = proto.copy()
  15. hasher.update(password.encode('utf-8'))
  16. if hasher.hexdigest() == user.password:
  17. return redirect('sub')
  18. except User.DoesNotExist:
  19. pass
  20. return render(request, 'demo/login.html',
  21. {'hint': '用户名或密码错误'})
  22. def register(request):
  23. form = UserForm()
  24. if request.method.lower() == 'get':
  25. return render(request, 'demo/register.html', {'f': form})
  26. else:
  27. ctx = {}
  28. try:
  29. form = UserForm(request.POST)
  30. ctx['f'] = form
  31. if form.is_valid():
  32. form.save(commit=True)
  33. ctx['hint'] = '注册成功请登录!'
  34. return render(request, 'demo/login.html', ctx)
  35. except:
  36. ctx['hint'] = '注册失败, 请重新尝试!'
  37. return render(request, 'demo/register.html', ctx)
  38. def show_subjects(request):
  39. ctx = {'subjects_list': Subject.objects.all()}
  40. return render(request, 'demo/subject.html', ctx)
  41. def show_teachers(request, no):
  42. teachers = Teacher.objects.filter(subject__no=no)
  43. ctx = {'teachers_list': teachers}
  44. return render(request, 'demo/teacher.html', ctx)
  45. def make_comment(request, no):
  46. ctx = {'code': 200}
  47. try:
  48. teacher = Teacher.objects.get(pk=no)
  49. if request.path.startswith('/good'):
  50. teacher.good_count += 1
  51. ctx['result'] = f'好评({teacher.gcount})'
  52. else:
  53. teacher.bad_count += 1
  54. ctx['result'] = f'差评({teacher.bcount})'
  55. teacher.save()
  56. except Teacher.DoesNotExist:
  57. ctx['code'] = 404
  58. return HttpResponse(json.dumps(ctx),
  59. content_type='application/json; charset=utf-8')