我正在创建一个页面,显示多项选择题,并选择作为单选按钮(并应根据用户选择的选项向用户显示提交结果)。我正在使用以下模型来解决问题:
class Question(models.Model):
q_id = models.IntegerField(primary_key=True)
q_text = models.TextField(blank=True, null=True)
choice1 = models.TextField(blank=True, null=True)
choice2 = models.TextField(blank=True, null=True)
choice3 = models.TextField(blank=True, null=True)
choice4 = models.TextField(blank=True, null=True)
correct_ans = models.TextField(blank=True, null=True)
显示问题的视图是:
def index(request):
latest_question_list = Question.objects.order_by('q_id')[:10]
return render(request,'index.html',{'latest_question_list': latest_question_list})
,模板(index.html)是:
<body>
{% if latest_question_list %}
<form action="/result/" method="post">
<ul>
{% for question in latest_question_list %}
<li>{{ question.q_text }}</li>
<input type="radio" name="{{question.q_id}}" value="1" />{{ question.choice1}}<br>
<input type="radio" name="{{question.q_id}}" value="2" />{{ question.choice2}}<br>
<input type="radio" name="{{question.q_id}}" value="3" />{{ question.choice3}}<br>
<input type="radio" name="{{question.q_id}}" value="4" />{{ question.choice4}}<br>
{% endfor %}
</ul>
<input style="margin-left:2%" type="submit" value="Submit"/>
</form>
{% endif %}
</body>
我想知道我应该在&#39;结果&#39;视图。 也就是说,如何由用户检查所选择的选项并将其与存储在问题模型中的正确问题选择对匹配,以便在结果中显示用户的分数&#39;页。
答案 0 :(得分:1)
在你的urls.py中设置
def yourView(request):
q = request.GET.get('q')
# note that 'q' is the value of the input
# the logic goes here
所以改变你的输入 - &gt; <input type="radio" name="q" value="1" />{{ question.choice1}}<br>
答案 1 :(得分:1)
你有很多问题,所以在你的结果视图中,声明一个字典并像这样迭代,
dict = {}
for i in numberOfQuestion:
dict[i] = request.POST.get('questions.'+i)
#dict will have all answers with question numbers