【问题标题】:Pass json object to another html将 json 对象传递给另一个 html
【发布时间】:2020-10-10 17:59:28
【问题描述】:

我有一个只有一张表的简单 Flask 应用程序。 所以python代码是无关紧要的简单:

@app.route('/')
def home():
    items = long_db_request()
    return render_template("index.html", items=items)


@app.route('/extended')
def extended():
    return render_template("animals.html")

而 items 是一个巨大的 JSON 对象。

我创建了一个反映该数据的表格:

<table>
        <tr>
        <th style="text-align:center">id</th>
        <th style="text-align:center">creation time</th>
        <th style="text-align:center">name</th>
        <th style="text-align:center">animals</th>
        <th style="text-align:center">number</th>
    </tr>
        {% for item in items %}
            <tr>
                <td> {{ item.id }} </td>
                <td> {{ item.time }} </td>
                <td>
                    <a href="{{url_for('extended', name=item.id )}}"> {{ item.name }} </a>
                </td>
                <td> {{item.group}} </td>
                <td>{{ item.group|length }}</td>
            </tr>
        {% endfor %}
    </table>

表格如下所示:

如您所见,动物柱子包含一个物体,这使得它很难被感知。 我希望它是这样的

这更容易获得。而show animals 是指向另一个页面的链接,其中存在纯 json。

我怎样才能做到这一点?

我遵循了 jinja2 和 Flask 的文档并找到了方法 url_for(),但在这种情况下,我必须在查询中传递我的所有 json,这是不可接受的..

如何从第一张图片跳转到第二张的精美视图?

第一张图片的工作代码是here

非常感谢您!

附:我在这里只看到了相关主题的one question,但这对我没有帮助

【问题讨论】:

    标签: html flask jinja2


    【解决方案1】:

    不要将所有动物(例如猫)从一个视图传递到另一个视图,只需将类别 cats 传递到下一页。

    下一页的视图函数然后从json中选择所有猫,然后将cats传递给详细视图。

    因此,在您的概览页面上,您会呈现 species.html?cats(等等)之类的链接,当有人单击这些链接时,视图函数会选择所有猫,然后将它们传递给 render_template("species.html", species=cats) 视图。

    【讨论】:

    • 我不确定我是否可以跟随。在上面的代码中,您可以访问您的 items 对象,它是 JSON 对象。在某些时候,您会生成或加载此数据。只需确保您可以从您的家庭和扩展路线访问此对象。在您的扩展路线中,您不会将完整的对象传递给您的模板,而只会传递必要的数据。您可以通过 json 模块在 Python 中使用 JSON。
    • @J. G. 我从很长的数据库请求中得到items,所以它只能在 home() 视图中访问,然后在 index.html 中。所以我稍微修改了代码以使其更清晰
    • 这不是理由 :-) 只需将 db 请求放在模块级别或将其粘贴到“get_data”函数中,您可以从两个视图函数访问该函数。如果您担心必须两次加载数据,则可以使用一些缓存。这比听起来容易得多。不要害怕做正确的事:-)
    • 我创建了一个小脚本来说明如何实现简单的缓存...第一次需要很长时间,但所有后续调用几乎同时返回...gist.github.com/jugmac00/8f722ce20b315ac66b0e69254827b6ee
    • @J. G. 谢谢,有没有办法以另一种方式解决任务,不使用 url_for() 并以某种方式尝试 js?..
    猜你喜欢
    • 2023-03-24
    • 2018-09-05
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多