def result(request): """ 比赛结果和排行榜的视图 :param request: 请求对象 :return: 渲染视图: qa_info: 答题记录数据;user_info: 用户信息数据;kind_info: 比赛信息数据;rank: 该用户当前比赛排名 """ uid = request.GET.get('uid', '') kind_id = request.GET.get('kind_id', '') qa_id = request.GET.get('qa_id', '') try: profile = Profile.objects.get(uid=uid) except Profile.DoesNotExist: return render(request, 'err.html', ProfileNotFound) try: kind_info = CompetitionKindInfo.objects.get(kind_id=kind_id) except CompetitionKindInfo.DoesNotExist: return render(request, 'err.html', CompetitionNotFound) try: qa_info = CompetitionQAInfo.objects.get(qa_id=qa_id, uid=uid) except CompetitionQAInfo.DoesNotExist: return render(request, 'err.html', QuestionLogNotFound) return render( request, 'competition/result.html', { 'qa_info': qa_info.detail, 'user_info': profile.data, 'kind_info': kind_info.data, 'rank': get_rank(kind_id, uid) })
def get_my_rank(request): uid = request.GET.get('uid', '') kind_id = request.GET.get('kind_id', '') try: profile = Profile.objects.get(uid=uid) except Profile.DoesNotExist: return json_response(*UserError.UserNotFound) try: kind_info = CompetitionKindInfo.objects.get(kind_id=kind_id) except CompetitionKindInfo.DoesNotExist: return json_response(*CompetitionError.CompetitionNotFound) return json_response(200, 'OK', { 'time': get_user_rank(kind_id, uid).get('time', 0), 'score': get_user_rank(kind_id, uid).get('score', 0), 'rank': get_rank(kind_id, uid) })