如何显示模型问题和选项并获得用户在django中选择的选项

问题描述 投票:0回答:1

我正在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})
django django-models django-forms django-views django-templates
1个回答
0
投票

对于您来说,我会像这样创建我的模型:

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

© www.soinside.com 2019 - 2024. All rights reserved.