我想自定义此测验应用:
https://github.com/tomwalker/django_quiz
实施进度条以帮助用户了解他在测验中的进展。 但我不确定在模板中使用此引导代码执行此操作的最简单方法是什么:
<div class="progress">
<div class="progress-bar progress-bar-info" role="progressbar" aria-valuenow="20" aria-valuemin="0" aria-valuemax="100" style="width: 20%">
<span class="sr-only">20% Complete</span>
</div>
</div>
views.py上有这个视图:
def user_new_quiz_session(request, quiz):
"""
initialise the Sitting class
"""
sitting = Sitting.objects.new_sitting(request.user, quiz)
if 'page_count' not in request.session:
request.session['page_count'] = int(0) # session page count for adverts
return user_load_next_question(request, sitting, quiz)
如果我在问题中使用count方法,它将只显示在第一页中。但我想在整个测验中有一个进度条。 我该怎么做?
答案 0 :(得分:1)
我只是简单地看了一下你的源代码,所以这些是关于解决这个问题的方法的一些想法,虽然不是一个完整的解决方案。
您可以尝试向Sitting
模型添加字段/方法,以计算会议的问题数量。
然后在user_load_next_question
的观看中,您可以通过将page_count
除以您现在可以通过坐标对象访问的问题数来计算进度。一些简单的数字和字符串操作将为您提供模板中所需的数字,用于计算进度百分比。
答案 1 :(得分:1)
我是测验应用的作者。
有几种不同的方法可以解决这个问题。像Tbrisker所说,你可以修改Sitting
模型。它有这个领域:
question_list = models.CommaSeparatedIntegerField(max_length=1024)
您可以将测验开始时的长度用作跟踪变量。
如前所述,测验应用的原始版本具有会话变量request.session['page_count']
每个回答的问题都会增加,但在测验之间没有重置。
我已将进度条的想法添加到测验应用的“待办事项”列表中。请密切关注它,我希望很快就能实现它。