views.py 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. from django.shortcuts import render
  2. from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
  3. # from django.core import serializers
  4. from .forms import LoginForm
  5. from .models import Question, AnswerRecord, Scores
  6. from datetime import datetime, timedelta
  7. import json
  8. # Create your views here.
  9. def index(request):
  10. # homepage
  11. if request.method == 'POST':
  12. login_form = LoginForm(request.POST)
  13. if login_form.is_valid():
  14. request.session['username'] = login_form.cleaned_data['username'].strip()
  15. if request.session['username'] == "":
  16. request.session['username'] = "匿名"
  17. # request.session['mobile'] = login_form.cleaned_data['mobile']
  18. # request.session['address'] = login_form.cleaned_data['district']
  19. # request.session['address'] = login_form.cleaned_data['address']
  20. request.session['address'] = 'NA'
  21. request.session['department'] = login_form.cleaned_data['department']
  22. request.session['age_range'] = login_form.cleaned_data['age_range']
  23. request.session['sex'] = login_form.cleaned_data['sex']
  24. request.session['mobile'] = '13000001111'
  25. # user_score = Scores()
  26. # if user_score.find_score(mobile_number=request.session['mobile']):
  27. # return render(request, 'dati/directPage.html', {'alertMsg': '您已经答过题了。', 'dirLink': '/cq/dati'})
  28. request.session['time'] = 0 # 答题次数
  29. request.session['correct'] = 0
  30. question_list = []
  31. request.session['used_question_list'] = question_list
  32. request.session['start_time'] = str(datetime.now())
  33. return HttpResponseRedirect('/cq/dati/dati')
  34. if request.method == 'GET':
  35. request.session.flush()
  36. return render(request, 'dati/index.html', {'form': LoginForm})
  37. def dati(request):
  38. # dati page
  39. quest = Question
  40. if request.session.get('mobile') is None:
  41. message = '请从登录页面开始'
  42. return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'})
  43. start_time = datetime.strptime(request.session['start_time'][0:19], '%Y-%m-%d %H:%M:%S')
  44. time_delta_since_last = (datetime.now()-start_time).total_seconds()
  45. # if time_delta_since_last > 120:
  46. # user_score = Scores()
  47. # user_score.user = request.session['username']
  48. # user_score.mobile = request.session['mobile']
  49. # user_score.department = request.session['department']
  50. # user_score.score = request.session['correct']
  51. # user_score.address = request.session['address']
  52. # user_score.total_time = 1000
  53. # user_score.add_score()
  54. # message = '你已经用完了2分钟答题时间。本次答题,你答对了' + str(request.session['correct']) + '题。'
  55. # del request.session['mobile']
  56. # return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'})
  57. if request.method == 'POST':
  58. request.session['time'] = request.session['time'] + 1 # time表示答题次数
  59. quest.ID = request.session['question_id']
  60. quest = Question.search_id(quest)
  61. your_answer = request.POST['answer']
  62. answer_record = AnswerRecord
  63. answer_record.user = request.session['username']
  64. answer_record.mobile = request.session['mobile']
  65. answer_record.department = request.session['department']
  66. answer_record.question = quest[0].q
  67. if int(your_answer) == quest[0].answer:
  68. answer_record.result = '正确'
  69. request.session['correct'] = request.session['correct'] + 1
  70. else:
  71. answer_record.result = '错误'
  72. # 用户的答案
  73. if your_answer == '1':
  74. answer_record.your_answer = quest[0].a1
  75. elif your_answer == '2':
  76. answer_record.your_answer = quest[0].a2
  77. elif your_answer == '3':
  78. answer_record.your_answer = quest[0].a3
  79. elif your_answer == '4':
  80. answer_record.your_answer = quest[0].a4
  81. elif your_answer == '5':
  82. answer_record.your_answer = quest[0].a5
  83. # 记录正确答案
  84. if quest[0].answer == 1:
  85. answer_record.correct_answer = quest[0].a1
  86. elif quest[0].answer == 2:
  87. answer_record.correct_answer = quest[0].a2
  88. elif quest[0].answer == 3:
  89. answer_record.correct_answer = quest[0].a3
  90. elif quest[0].answer == 4:
  91. answer_record.correct_answer = quest[0].a4
  92. elif quest[0].answer == 5:
  93. answer_record.correct_answer = quest[0].a5
  94. AnswerRecord.add_record(answer_record)
  95. if request.session['time'] >= 15: # 控制总答题数量,达到后结束答题
  96. user_score = Scores()
  97. user_score.user = request.session['username']
  98. user_score.mobile = request.session['mobile']
  99. user_score.department = request.session['department']
  100. user_score.score = request.session['correct']
  101. user_score.address = request.session['address']
  102. user_score.total_time = time_delta_since_last
  103. user_score.sex = request.session['sex']
  104. user_score.age_range = request.session['age_range']
  105. # user_score.add_score()
  106. user_score.save()
  107. del request.session['mobile']
  108. # message = '答题结束本次答题,你答对了'+str(request.session['correct'])+'题。共用时'+str(round(user_score.total_time))+'秒。'
  109. # if request.session['correct'] == 10:
  110. # message = '您完成答题,您答对了10题。答题完成界面请拍照保留后,至前台领取活动宣传品一份。'
  111. # else:
  112. # message = '您完成答题,您答对了' + str(request.session['correct']) + '题。'
  113. # message = '您完成答题,您答对了' + str(request.session['correct']) + '题。'
  114. # return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'})
  115. feedback = '好的成绩,全靠努力,继续加油,再次来战!'
  116. correct_qty = request.session['correct']
  117. if correct_qty == 15:
  118. feedback = '满分答卷,您也可以选择再次挑战。'
  119. elif correct_qty >= 12:
  120. feedback = '学习到位,成绩优秀,您是否选择再次挑战?'
  121. elif correct_qty >= 9:
  122. feedback = '再接再厉,不懈努力,等您再次来答题!'
  123. else:
  124. feedback = '好的成绩,全靠努力,继续加油,再次来战!'
  125. return render(request, 'dati/result.html', {'correct_qty': correct_qty, 'feedback': feedback})
  126. else:
  127. return HttpResponseRedirect('/cq/dati/dati')
  128. # 答对一定数量后给的提示
  129. # if request.session['correct'] == 500:
  130. # message = '再接再厉,奖品离你越来越近了哦!'
  131. # return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati/dati'})
  132. # else:
  133. # return HttpResponseRedirect('/cq/dati/dati')
  134. if request.method == 'GET':
  135. quest = Question.get_random_question()[0]
  136. request.session['question_id'] = quest.ID
  137. used_question_list = request.session['used_question_list']
  138. question_number = request.session['time'] + 1
  139. while True:
  140. if quest.ID in used_question_list:
  141. quest = Question.get_random_question()[0]
  142. request.session['question_id'] = quest.ID
  143. else:
  144. used_question_list.append(quest.ID)
  145. break
  146. return render(request, 'dati/dati.html',
  147. {'question': quest, 'start_time': str(start_time), 'question_number': question_number})
  148. def history(request):
  149. answer_record = AnswerRecord
  150. answer_record.user = request.session['username']
  151. answer_record.mobile = request.session['mobile']
  152. answer_record = AnswerRecord.get_record(answer_record)
  153. return render(request, 'dati/history.html', {'history': answer_record})
  154. def ranking(request):
  155. ranking_list = Scores.get_score_list()
  156. for r in ranking_list:
  157. if r.total_time == 1000:
  158. r.total_time = 120
  159. return render(request, 'dati/ranking.html', context={'ranking_list': ranking_list, 'title': '排行榜'})
  160. def ranking_json(request):
  161. ranking_list = Scores.get_score_list()
  162. ranking_list_json = json.dumps(list(ranking_list.values('user', 'mobile', 'department', 'score')))
  163. return JsonResponse(ranking_list_json, safe=False)