0 python jinja2 flask flask-sqlalchemy
我是Flask的初学者.我正在构建一个简单的测验应用程序.我有两张桌子.一个是问题表,另一个是选项表,有一个正确的答案.我想展示一个问题和四个选项,然后是第二个问题,等等.我搜索了如何渲染到模板的每个地方.困住了路障.尝试了不同的懒惰选项.
Model.py
class Question(db.Model):
__tablename__ = 'edu_word_questions'
question_id = db.Column(db.Integer, primary_key = True)
word = db.Column(db.String(100))
question_type = db.Column(db.String(100))
answers = db.relationship('Question_answers', backref='Question',
lazy='subquery')
class Question_answers(db.Model):
__tablename__ = 'edu_question_answers'
answer_id = db.Column(db.Integer, primary_key=True)
answer = db.Column(db.String(100))
question_id = db.Column(db.Integer, db.ForeignKey('edu_word_questions.question_id'))
routes.py
@app.route('/quiz')
def quiz():
quiz = db.session.query(Question, Question_answers).join(Question_answers,Question.question_id == Question_answers.question_id)
# quiz = db.session.query(Question).all()
# answers = db.session.query(Question_answers).all()
return render_template('quiz.html', quiz=quiz)
HTML
{% for key,value in quiz %}
<li><h2>{{ word }}</h2>
<li><h2>{{ answer }}</h2>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
你的循环没有意义,因为它不是字典.由于您在问题中有答案,因此您可以抓住问题,并在运行时自动获取答案,因为当您在模板中遍历q.answers时,它会延迟加载.
routes.py
@app.route('/quiz')
def quiz():
questions = db.session.query(Question).all()
return render_template('quiz.html', questions=questions )
Run Code Online (Sandbox Code Playgroud)
HTML
{% for q in questions %}
<li><h2>{{ q.word }}</h2>
{% for a in q.answers %}
<li><h2>{{ a.answer }}</h2>
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2580 次 |
| 最近记录: |