欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

flask中jinjia2模板引擎使用详解5

发布时间:2025/7/14 编程问答 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 flask中jinjia2模板引擎使用详解5 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

接上文

可以理解为函数,即把一些常用的模板片段做好封装,以便于重用,减少工作量和维护难度。

宏的定义很简单:

{%macro xxx()%}

##这里写内容

{%endmacro%}

下面引用官方的一个例子进行说明:

{% macro input(name, value='', type='text', size=20) -%}

<input type="{{ type }}" name="{{ name }}" value="{{

value|e }}" size="{{ size }}">

{%- endmacro %}

在content的block中进行调用

<>{{ () }}</> <>{{ (, =) }}</>

运行效果:

导入宏

我们可以把常用的宏放到一个文件中,然后在其它文件中引用,实现模块化的管理。

我们新建一个form.html的文件,放入如下的代码:

{% (, =, =) -%}<{{ }}{{ |}}{{ }}> {%- %}{%- (, =, =10, =40) -%}<{{ }}{{ }}{{ }}>{{ |}}</> {%- %}

在list.html中导入forms.html

{% import "forms.html" as forms%}

调用方式

<><>Username</><>{{ .() }}</><>Password</><>{{ .(, =) }}</> </> <>{{ .() }}</>

运行效果:

还有一种调用方式:

{% from 'forms.html' import input as input_field, textarea %}

宏调用

在某些情况下,需要把一个宏传递到另一个宏。为此,可以使用特殊的 call 块。 下面的例子展示了如何让宏利用调用功能:

代码:

<h1>调用示例</h1>
{% macro render_dialog(title, class='dialog') -%}
<div class="{{ class }}">
<h2>{{ title }}</h2>
<div class="contents">
{{ caller() }}
</div>
</div>
{%- endmacro %}
{% call render_dialog('Hello World') %}
This is a simple dialog rendered by using a macro and
a call block.
{% endcall %}

运行效果:

Call块其实是一种特殊的宏,我们可以叫它为匿名宏,就是没有命名的函数,函数当然就可以有参数,下面还是以一个例子来说明一下带参数的call模块的使用方式。
<h1>带参数的宏</h1>
{% macro dump_users(users) -%}
<ul>
{%- for user in users %}
<li><p>{{ user|e }}</p>{{ caller(user) }}</li>
{%- endfor %}
</ul>
{%- endmacro %}
{% call(user) dump_users(users) %}
<dl>
<dl>姓名</dl>
<dd>{{ user|e }}</dd>
</dl>
{% endcall %}

运行效果:


本文源代码:链接:https://pan.baidu.com/s/1BD6pESSwW8SoRHKe66P8Dw 密码:ur6u 

转载于:https://blog.51cto.com/12482328/2083998

总结

以上是生活随笔为你收集整理的flask中jinjia2模板引擎使用详解5的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。