如何将数据传递到Jinja Templet

时间:2018-09-07 20:50:48

标签: python postgresql flask jinja2

长时间敲击键盘后,我可能会感到疲倦,但目前无法继续前进。 这是代码:

        elif request.form["submit"] == "blah":
        cursor.execute('''SELECT * FROM "Table_x"''')
        results = cursor.fetchall()
        for record in cursor:
            results.append(record)
        return "Showing all:" + str(results) + render_template("index.html")

基于上述内容,渲染模板上的输出给了我一个讨厌的元组列表。

[(1, 'Dummy1', 'dummy1', 1), (2, 'Dummy2', 'dummy2', 2), (3, 'Dummy3', 'dummy3', 3)] 

如何更改return或result变量(或两者),以使列表中的每个元组都打印在单独的行中?

1 个答案:

答案 0 :(得分:0)

问题是如何使用文档中的render_template将数据传递到模板:

  

从具有给定上下文的template文件夹中渲染模板。

     

参数:template_name_or_list –要使用的模板的名称   渲染的,或使用模板名称迭代的第一个现有模板   将呈现上下文–应在以下位置使用的变量   模板的上下文。

context只不过是您要作为关键字参数传递的变量。遵循一个示例,首先是python文件app.py

#!/usr/bin/python3

from flask import Flask, render_template

app = Flask(__name__)


@app.route("/tuple")
def jpg_to_pdf():
    results = [(1, 'Dummy1', 'dummy1', 1), (2, 'Dummy2', 'dummy2', 2), (3, 'Dummy3', 'dummy3', 3)]
    return render_template('index.html', data=results)

和Jinja模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Tuple</title>
</head>
<body>
<table style="width: 100%">
{% for element in data %}
 <tr>
    <th>{{ element[0] }}</th>
    <th>{{ element[1] }}</th>
    <th>{{ element[2] }}</th>
    <th>{{ element[3] }}</th>
  </tr>
{% endfor %}
</table>
</body>
</html>

这些文件合并呈现以下html代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Tuple</title>
</head>
<body>
<table style="width: 100%">

 <tr>
    <th>1</th>
    <th>Dummy1</th>
    <th>dummy1</th>
    <th>1</th>
  </tr>

 <tr>
    <th>2</th>
    <th>Dummy2</th>
    <th>dummy2</th>
    <th>2</th>
  </tr>

 <tr>
    <th>3</th>
    <th>Dummy3</th>
    <th>dummy3</th>
    <th>3</th>
  </tr>

</table>
</body>
</html>

您可以找到有关渲染模板here的更多信息。