返回介绍

使用 Jinja2 子模板

发布于 2025-01-02 21:53:50 字数 1150 浏览 0 评论 0 收藏 0

我设计的个人主页,使用头像和文字组合的方式来展示了用户动态。 现在我想在主页也使用类似的风格来布局。 我可以复制/粘贴来处理用户动态渲染的模板部分,但这实际上并不理想,因为之后如果我想要对此布局进行更改,我将不得不记住要更新两个模板。

取而代之,我要创建一个只渲染一条用户动态的子模板,然后在 user.html 和 index.html 模板中引用它。 首先,我要创建这个只有一条用户动态 HTML 元素的子模板。 我将其命名为 app/templates/_post.html , _ 前缀只是一个命名约定,可以帮助我识别哪些模板文件是子模板。

    <table>
        <tr valign="top">
            <td><img src="{{ post.author.avatar(36) }}"></td>
            <td>{{ post.author.username }} says:<br>{{ post.body }}</td>
        </tr>
    </table>

我在 user.html 模板中使用了 Jinja2 的 include 语句来调用该子模板:

{% extends "base.html" %}

{% block content %}
    <table>
        <tr valign="top">
            <td><img src="{{ user.avatar(128) }}"></td>
            <td><h1>User: {{ user.username }}</h1></td>
        </tr>
    </table>
    <hr>
    {% for post in posts %}
        {% include '_post.html' %}
    {% endfor %}
{% endblock %}

应用的主页还没有完善,所以现在我不打算在其中添加这个功能。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文