python – 如何获取Jinja2模板中的参数列表
发布时间:2020-12-20 13:36:19 所属栏目:Python 来源:网络整理
导读:参见英文答案 How to get a list of current variables from Jinja 2 template?????????????????????????????????????2个 如何获取传递给Jinja2模板的所有参数的列表? 如果我有一个非常通用的模板,我想列出所有传递的参数(出于调试原因)有没有办法做到这一
参见英文答案 >
How to get a list of current variables from Jinja 2 template?????????????????????????????????????2个
如何获取传递给Jinja2模板的所有参数的列表? 如果我有一个非常通用的模板,我想列出所有传递的参数(出于调试原因)有没有办法做到这一点? 就像是: mytemplate.html {% for argument in LIST_OF_ARGUMENT %} {{ argument }}<br> {% endfor %} 所以在视图/ foobar中 如果我以这种方式调用模板: return render_template('mytemplate.html',form=myform,foo='bar') 我明白了 the_content_of_form <br> bar <br> 如果我以这种方式调用模板: return render_template('mytemplate.html',lorem=ipsum,fooooo='barrrrr') 我明白了 the_content_of_lorem <br> barrrrr <br> 解决方法
那么你只需要将它们作为参数传递给render_template,可能最常见的用法是将一个字典列表作为参数传递给渲染模板:
def Viewfunction(): #do something,get something from db as result and then arguments = [dict(name=row[0],age=row[1]) for row in result.fetchall()] return render_template('mytemplate.html',arguments=arguments) 然后像这样访问它们: {% for item in arguments %} {{ item.name }} {{ item.age }} {% endfor %} 显然,你也可以将所有其他列表,而不仅仅是字典列表传递给模板,然后以非常类似的方式循环它们. 至于调试我发现Flask内置的调试工具非常有用,如果你得到一个例外,你只需要一个可以执行代码的页面,如果你对所有的变量感兴趣,你可以简单地输入locals() stacktrace中的帧.您只需启用调试模式即可使用它,只需记住在生产中将其关闭即可. 这是一个适合您的工作示例,当您在examples文件夹下载它时,它取自烧瓶中的flaskr示例应用程序: @app.route('/') def show_entries(): db = get_db() cur = db.execute('select title,text from entries order by id desc') entries = cur.fetchall() return render_template('show_entries.html',entries=entries,local=locals()) 当你这样做时: {% for item in local %} {{ item }} {% endfor %} 你会得到db cur条目,这是你想要的吗? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |