python - 将模板字符串传递给 Jinja 宏

标签 python flask jinja2

我想从宏中渲染模板字符串。我尝试使用以下使用 {{ comment|safe }} 呈现模板的宏来完成此操作,但呈现了模板中的变量,例如 {{ name }}从字面上代替 name 的值。如何在宏参数中允许变量数据?

{% macro comment_el(image_url, name, comment) %}
  <div class="media no-border-top">
    <div class="media-left">
      <a href="{{ outgoing_url }}" >
        <img class="media-object" src="{{ image_url }}" />
      </a>
    </div>
    <div class="media-body">
      <h4 class="media-heading"><a href="{{ outgoing_url }}" >{{ name }}</a></h4>
      <p>{{ comment|safe }}</p>
    </div>
  </div>
{% endmacro %}
{{ comment_el(
    url_for("static", filename="img/c01.jpg"),
    "Some Name",
    "This comment is amazing. All I want to say is that {{ name }} is an amazing person"
) }}

输出:

<p>This comment is amazing. All I want to say is that {{ name }} is an amazing person</p>

最佳答案

那是不可能的。

但是,您可以在 Jinja 宏中有一个 caller 来让您传递一个 block :

{% macro comment_el(image_url, name) %}
    ...
    <div class="media-body">
      <p>{{ caller() }}</p>
    </div>
    ...
{% endmacro %}

然后这样调用它:

{% call comment_el(url_for("static", filename="img/c01.jpg"), "Some Name") -%}
    This comment is amazing. All I want to say is that {{ name }} is an amazing person 
{%- endcall %}

相关文档:http://jinja.pocoo.org/docs/2.9/templates/#call


解决它的另一种选择是:

{% set comment -%}
    This comment is amazing. All I want to say is that {{ name }} is an amazing person
{%- endset %}
{{ comment_el(url_for("static", filename="img/c01.jpg"),
    "Some Name",
    comment
) }}

相关文档:http://jinja.pocoo.org/docs/2.9/templates/#block-assignments


为了完整起见,您还可以使用格式化:

{{ comment_el(url_for("static", filename="img/c01.jpg"),
"Some Name",
"This comment is amazing. All I want to say is that %s is an amazing person" | format(name)
) }}

关于python - 将模板字符串传递给 Jinja 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42536716/

相关文章:

Python3 Flask 在服务器内存中上传文件

javascript - Google 图表 - 无效语法或意外标记

python - 使用 PIL 从文件夹加载所有图像

python - 为什么 10 次方不等于 Python 中大数的科学记数法?

python - 如何在 OpenVINO 中为 Tacotron 模型设置模型优化器的输入形状?

基于 Flask 类的 API 和 jsonrpc

python - 读取文本文件中特定行和列的数据

javascript - 基于服务器的 Bokeh 图更新

django - 如何在 Django 中制作可重用的模板?

ansible - 无法对/etc/下的文件使用查找文件模块