【发布时间】:2020-05-20 09:34:59
【问题描述】:
我是一个初学者,我正在尝试使用 sqlalchemy、flask 和 python3 构建一个简单的多选测验平台。我有一个 index.html 页面,其中一部分看起来像:
{% for q in quiz %}
<li>{{ q.question }}</li>
<input type='radio' value='A' name='choice' /> {{q.optionA}}
<input type='radio' value='B' name='choice' /> {{q.optionB}}
<input type='radio' value='C' name='choice' /> {{q.optionC}}
<input type='radio' value='D' name='choice' /> {{q.optionD}}
{% endfor %}
在我的 routes.py 中,我在下面添加了一行,以便我可以以列表的形式遍历我的测验数据库:
quiz = Quiz.query.all()
return render_template('index.html', title='Home', posts=posts, quiz=quiz)
在我的数据库中,测验看起来像:
class Quiz(db.Model):
id = db.Column(db.Integer, primary_key=True)
question = db.Column(db.String(150))
optionA = db.Column(db.String(150))
optionB = db.Column(db.String(150))
optionC = db.Column(db.String(150))
optionD = db.Column(db.String(150))
answer = db.Column(db.String(1))
quizCode = db.Column(db.String(2))
到目前为止,我的数据库中只有两个问题,它们看起来像:
- 2+2
4. 5. 6. 7. - 2+3
2. 3. 4. 5.
然后我有问题,因为每次我运行它,并尝试在 index.html 上选择一个选项,我只能选择一个,当我移动到下一个问题并进行选择时,上面问题中的选项将取消选择本身。我知道这是因为所有选项都在同一个组 name='choice' 中,但是我不知道如何解决这个问题。
我试图将每一行作为一个列表进行迭代,以便我可以将每个问题作为一个单独的组:
o = Quiz.query.filter_by(quizCode="1").first() #I was trying to test if this works
oneItem = o.query.all() #I want to treat o as a single list so that I can only iterate through o
但我失败了。那么有什么解决方案吗?
【问题讨论】:
标签: python-3.x flask sqlalchemy jinja2