Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Flask/SQLalchemy/Jinja2——嵌套循环渲染_Python_Flask_Jinja2_Flask Sqlalchemy - Fatal编程技术网

Python Flask/SQLalchemy/Jinja2——嵌套循环渲染

Python Flask/SQLalchemy/Jinja2——嵌套循环渲染,python,flask,jinja2,flask-sqlalchemy,Python,Flask,Jinja2,Flask Sqlalchemy,我是烧瓶的初学者。我正在构建一个简单的测验应用程序。我有两张桌子。一个是问题表,另一个是选项表,有一个正确答案。我想展示一个问题和四个选项,然后是第二个问题,依此类推。 我到处搜索如何渲染到模板中。堵住了一个路障。尝试了不同的懒惰选项 Model.py class Question(db.Model): __tablename__ = 'edu_word_questions' question_id = db.Column(db.Integer, primary_key = True) word

我是烧瓶的初学者。我正在构建一个简单的测验应用程序。我有两张桌子。一个是问题表,另一个是选项表,有一个正确答案。我想展示一个问题和四个选项,然后是第二个问题,依此类推。 我到处搜索如何渲染到模板中。堵住了一个路障。尝试了不同的懒惰选项

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 %}
Model.py
课堂提问(db.Model):
__tablename_uuuu='edu_单词_问题'
问题id=db.Column(db.Integer,主键=True)
word=db.Column(db.String(100))
问题类型=db.Column(db.String(100))
answers=db.relationship('Question_answers',backref='Question',
lazy='subquery')
课堂问题和答案(数据库模型):
__tablename_uuuu='edu_问题u答案'
答案id=db.Column(db.Integer,主键=True)
答案=db.Column(db.String(100))
question\u id=db.Column(db.Integer,db.ForeignKey('edu\u word\u questions.question\u id'))
routes.py
@应用程序路径(“/quick”)
def quick():
quick=db.session.query(问题,问题,答案)。join(问题,答案,问题,问题id==问题,答案,问题id)
#quick=db.session.query(问题).all()
#answers=db.session.query(问题\答案).all()
返回呈现模板('quick.html',quick=quick)
HTML
{%为键,值在测验%}
  • {{word}}
  • {{答案} {%endfor%}
  • 您的循环没有什么意义,因为它不是字典。因为您在问题中有答案,所以您可以只抓取问题,并在运行时自动抓取答案,因为当您迭代模板中的q.answers时,它是惰性加载的

    routes.py

    @app.route('/quiz')
    def quiz():
        questions = db.session.query(Question).all()
        return render_template('quiz.html', questions=questions )
    
    HTML

    {%用于问题中的q%}
    
  • {{q.word}} {q.answers%中的a的百分比}
  • {{a.答案} {%endfor%} {%endfor%}
  • 您的循环没有什么意义,因为它不是字典。因为您在问题中有答案,所以您可以只抓取问题,并在运行时自动抓取答案,因为当您迭代模板中的q.answers时,它是惰性加载的

    routes.py

    @app.route('/quiz')
    def quiz():
        questions = db.session.query(Question).all()
        return render_template('quiz.html', questions=questions )
    
    HTML

    {%用于问题中的q%}
    
  • {{q.word}} {q.answers%中的a的百分比}
  • {{a.答案} {%endfor%} {%endfor%}
  • 非常感谢您的帮助。是的,它解决了我的麻烦。“真的很感激。”昌巴纳很高兴我能帮上忙。如果它回答了你的问题,请在左边的接受答案上打勾。非常感谢你的帮助。是的,它解决了我的麻烦。“真的很感激。”昌巴纳很高兴我能帮上忙。如果它回答了您的问题,请在左边打勾,作为已接受的答案。