123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- 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)
|