from django.shortcuts import render from django.http import HttpResponse, HttpResponseRedirect, JsonResponse # from django.core import serializers from .forms import LoginForm from .models import Question, AnswerRecord, Scores from datetime import datetime, timedelta import json # Create your views here. def index(request): # homepage if request.method == 'POST': login_form = LoginForm(request.POST) if login_form.is_valid(): request.session['username'] = login_form.cleaned_data['username'].strip() if request.session['username'] == "": request.session['username'] = "匿名" # request.session['mobile'] = login_form.cleaned_data['mobile'] # request.session['address'] = login_form.cleaned_data['district'] # request.session['address'] = login_form.cleaned_data['address'] request.session['address'] = 'NA' request.session['department'] = login_form.cleaned_data['department'] request.session['age_range'] = login_form.cleaned_data['age_range'] request.session['sex'] = login_form.cleaned_data['sex'] request.session['mobile'] = '13000001111' # user_score = Scores() # if user_score.find_score(mobile_number=request.session['mobile']): # return render(request, 'dati/directPage.html', {'alertMsg': '您已经答过题了。', 'dirLink': '/cq/dati'}) request.session['time'] = 0 # 答题次数 request.session['correct'] = 0 question_list = [] request.session['used_question_list'] = question_list request.session['start_time'] = str(datetime.now()) return HttpResponseRedirect('/cq/dati/dati') if request.method == 'GET': request.session.flush() return render(request, 'dati/index.html', {'form': LoginForm}) def dati(request): # dati page quest = Question if request.session.get('mobile') is None: message = '请从登录页面开始' return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'}) start_time = datetime.strptime(request.session['start_time'][0:19], '%Y-%m-%d %H:%M:%S') time_delta_since_last = (datetime.now()-start_time).total_seconds() # if time_delta_since_last > 120: # user_score = Scores() # user_score.user = request.session['username'] # user_score.mobile = request.session['mobile'] # user_score.department = request.session['department'] # user_score.score = request.session['correct'] # user_score.address = request.session['address'] # user_score.total_time = 1000 # user_score.add_score() # message = '你已经用完了2分钟答题时间。本次答题,你答对了' + str(request.session['correct']) + '题。' # del request.session['mobile'] # return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'}) if request.method == 'POST': request.session['time'] = request.session['time'] + 1 # time表示答题次数 quest.ID = request.session['question_id'] quest = Question.search_id(quest) your_answer = request.POST['answer'] answer_record = AnswerRecord answer_record.user = request.session['username'] answer_record.mobile = request.session['mobile'] answer_record.department = request.session['department'] answer_record.question = quest[0].q if int(your_answer) == quest[0].answer: answer_record.result = '正确' request.session['correct'] = request.session['correct'] + 1 else: answer_record.result = '错误' # 用户的答案 if your_answer == '1': answer_record.your_answer = quest[0].a1 elif your_answer == '2': answer_record.your_answer = quest[0].a2 elif your_answer == '3': answer_record.your_answer = quest[0].a3 elif your_answer == '4': answer_record.your_answer = quest[0].a4 elif your_answer == '5': answer_record.your_answer = quest[0].a5 # 记录正确答案 if quest[0].answer == 1: answer_record.correct_answer = quest[0].a1 elif quest[0].answer == 2: answer_record.correct_answer = quest[0].a2 elif quest[0].answer == 3: answer_record.correct_answer = quest[0].a3 elif quest[0].answer == 4: answer_record.correct_answer = quest[0].a4 elif quest[0].answer == 5: answer_record.correct_answer = quest[0].a5 AnswerRecord.add_record(answer_record) if request.session['time'] >= 15: # 控制总答题数量,达到后结束答题 user_score = Scores() user_score.user = request.session['username'] user_score.mobile = request.session['mobile'] user_score.department = request.session['department'] user_score.score = request.session['correct'] user_score.address = request.session['address'] user_score.total_time = time_delta_since_last user_score.sex = request.session['sex'] user_score.age_range = request.session['age_range'] # user_score.add_score() user_score.save() del request.session['mobile'] # message = '答题结束本次答题,你答对了'+str(request.session['correct'])+'题。共用时'+str(round(user_score.total_time))+'秒。' # if request.session['correct'] == 10: # message = '您完成答题,您答对了10题。答题完成界面请拍照保留后,至前台领取活动宣传品一份。' # else: # message = '您完成答题,您答对了' + str(request.session['correct']) + '题。' # message = '您完成答题,您答对了' + str(request.session['correct']) + '题。' # return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati'}) feedback = '好的成绩,全靠努力,继续加油,再次来战!' correct_qty = request.session['correct'] if correct_qty == 15: feedback = '满分答卷,您也可以选择再次挑战。' elif correct_qty >= 12: feedback = '学习到位,成绩优秀,您是否选择再次挑战?' elif correct_qty >= 9: feedback = '再接再厉,不懈努力,等您再次来答题!' else: feedback = '好的成绩,全靠努力,继续加油,再次来战!' return render(request, 'dati/result.html', {'correct_qty': correct_qty, 'feedback': feedback}) else: return HttpResponseRedirect('/cq/dati/dati') # 答对一定数量后给的提示 # if request.session['correct'] == 500: # message = '再接再厉,奖品离你越来越近了哦!' # return render(request, 'dati/directPage.html', {'alertMsg': message, 'dirLink': '/cq/dati/dati'}) # else: # return HttpResponseRedirect('/cq/dati/dati') if request.method == 'GET': quest = Question.get_random_question()[0] request.session['question_id'] = quest.ID used_question_list = request.session['used_question_list'] question_number = request.session['time'] + 1 while True: if quest.ID in used_question_list: quest = Question.get_random_question()[0] request.session['question_id'] = quest.ID else: used_question_list.append(quest.ID) break return render(request, 'dati/dati.html', {'question': quest, 'start_time': str(start_time), 'question_number': question_number}) def history(request): answer_record = AnswerRecord answer_record.user = request.session['username'] answer_record.mobile = request.session['mobile'] answer_record = AnswerRecord.get_record(answer_record) return render(request, 'dati/history.html', {'history': answer_record}) def ranking(request): ranking_list = Scores.get_score_list() for r in ranking_list: if r.total_time == 1000: r.total_time = 120 return render(request, 'dati/ranking.html', context={'ranking_list': ranking_list, 'title': '排行榜'}) def ranking_json(request): ranking_list = Scores.get_score_list() ranking_list_json = json.dumps(list(ranking_list.values('user', 'mobile', 'department', 'score'))) return JsonResponse(ranking_list_json, safe=False)