【问题标题】:How to pass data to jinja templet如何将数据传递给 jinja 模板
【发布时间】:2018-09-07 20:50:48
【问题描述】:

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

        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)] 

如何更改返回或结果变量(或两者),以便列表中的每个元组都打印在单独的行中?

【问题讨论】:

  • 你需要循环遍历jinja中的元组列表,并在每个元组之后添加一个换行符(<br>)。
  • 您的问题看起来在于您如何呈现模板。从技术上讲,您创建数据的方式没有任何问题

标签: python postgresql flask jinja2


【解决方案1】:

问题在于您如何使用文档中的render_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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-08
    • 2014-12-17
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 2014-05-28
    相关资源
    最近更新 更多