如何在render_template之后查询数据库

时间:2013-08-09 15:19:45

标签: python sqlite flask

我有两个SQLite表。两者共享相同的“ID”主键。通过烧瓶我已经发送了所有信息(表1)我希望以表格格式显示到html。我想查询(表1)的“id”,并在点击一行时从(表2)中得到结果。

我看过sql.js(Javascript),但我确实知道这不是网络安全的。 我知道循环来自cur.fetchall()的另一个dicts列表也不是解决方案。

最简单的解决方案是以某种方式将“id”发送回python脚本并从那里查询。没有形式,不知道该怎么做。我已经研究过AJAX,但对我来说没有多大意义。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

“简单”方式(没有ajax)是在表1的每个条目旁边都有一个链接,指向包含表2中相关信息的新页面。示例:

@app.route('/table1')
def show_table1():
    data = Table1.query.all()
    return render_template('table1.html', data = data)

@app.route('/table2/<int:id>')
def show_table2(id):
    item = Table2.query.get(id)
    return render_template('table2.html', table2_item = item)

表1模板将显示元素列表,并为每个元素显示相关表2页面的链接:

{% for item in data %}
    {{ item.name }} <a href="{{ url_for('show_table2', id = item.id) }}">Click for more information</a>
{% endfor %}

然后table2.html只显示数据并提供一个返回表1页面的链接:

{{ table2_item.name }}
<a href="{{ url_for('show_table1') }}">Go back</a>

更复杂的方法是使用ajax在同一页面中完成所有这些操作,但为此你需要编写一些Javascript来动态地将数据插入到HTML文档中。

我希望这会有所帮助。