我正在django中创建测验网站...我对如何获取模型的样式和选项并将其显示在页面中感到困惑,以及如何将选择的选项与结果模型回答并保持沉默分数。
这是我的MODELS.PY
class question(models.Model):
question=models.CharField(max_length=100)
def __str__(self):
return self.question
class options(models.Model):
question=models.ForeignKey(question,default=1,on_delete=models.SET_DEFAULT)
op1=models.CharField(max_length=20)
op2=models.CharField(max_length=20)
op3=models.CharField(max_length=20)
op4=models.CharField(max_length=20)
# def __str__(self):
# return self.question
class answer(models.Model):
question=models.ForeignKey(question,default=1,on_delete=models.SET_DEFAULT)
result=models.CharField(max_length=50)
template(quizpage.html)
<body>
<h2>Hello, {{username}}</h2>
<div id="nav">
<a href="/logout">Logout</a>
</div>
<br>
{% for i in ques %}
<h2>{{i.optionsid}}{{i.question}}</h2>
<br>
<form action="/next" method="POST">
<input type="radio" name="answer" value="a"><span>{{i.op1}}</span>
<input type="radio" name="answer" value="a"><span>{{i.op2}}</span>
<input type="radio" name="answer" value="a"><span>{{i.op3}}</span>
<input type="radio" name="answer" value="a"><span>{{i.op4}}</span>
<input type="submit" value="next">
</form>
{% endfor %}
</body>
Views.py
def addscore(request):
score=0
if request.method=='POST':
ans=request.POST.get('answer')
??????
return render(request,'nextpage')
else:
return render(request,'quizapp/quizpage.html')
def nextquestion(request):通过
def showtest(request):
ops=models.options.objects.filter(id='id')
return render(request,'quizapp/quizpage.html',{'ops':ops})
对于您来说,我会像这样创建我的模型:
class question(models.Model):
question=models.CharField(max_length=100)
def __str__(self):
return self.question
class options(models.Model):
question=models.ForeignKey(question,on_delete=models.SET_DEFAULT)
value=models.CharField(max_length=20)
is_correct=models.BooleanField(default=False)
# def __str__(self):
# return self.question
class answer(models.Model):
question=models.OneToOneField(question,on_delete=models.SET_DEFAULT)
option=models.OneToOneField(options,on_delete=models.SET_DEFAULT)
模板:
<form action="/next" method="POST">
{% for option in options %}
<input type="radio" name="option_id" value="{{option.pk}}"><span>{{option.value}}</span>
{% endfor %}
<input type="submit" value="next">
</form>
然后在我看来,我会增加得分,例如:
selected_option=Option.objects.get(pk=request.POST.get('option_id'))
if selected_option.is_correct:
score += 1