Spa*_*ide 6 python jinja2 flask
我想从宏渲染模板字符串。我尝试使用以下宏来执行此操作,该宏使用 呈现模板{{ 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 %}
Run Code Online (Sandbox Code Playgroud)
{{ 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"
) }}
Run Code Online (Sandbox Code Playgroud)
输出:
<p>This comment is amazing. All I want to say is that {{ name }} is an amazing person</p>
Run Code Online (Sandbox Code Playgroud)
Thi*_*ter 16
那是不可能的。
但是,您可以使用callerin Jinja 宏来传递块:
{% macro comment_el(image_url, name) %}
...
<div class="media-body">
<p>{{ caller() }}</p>
</div>
...
{% endmacro %}
Run Code Online (Sandbox Code Playgroud)
然后像这样调用它:
{% 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 %}
Run Code Online (Sandbox Code Playgroud)
相关文档: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
) }}
Run Code Online (Sandbox Code Playgroud)
相关文档: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)
) }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4599 次 |
| 最近记录: |