jinja2常用基本语法

本文介绍了Jinja2模板语言的关键特性,如变量使用、for循环、条件判断、import和include指令、过滤器、继承机制以及模块化应用。内容涵盖了基本语法和实战操作,适合网络工程师学习。
摘要由CSDN通过智能技术生成

变量

{{变量名称}}

循环

{%for i in range(100)%}

    代码块

{%endfor%}

条件判断

{%if true%}
    
    代码块1

{%elif true%}

    代码块2

{%else%}

    代码块3

{%endif%}

include导入其他模板

{%include "sub.tpl"%}

过滤器

{{vendor_list|filter()}}

继承母版

{%extends 'base.conf.tpl'%}

简单示例:

Template直接渲染

 

加载jinja2的模板

        FileSystemLoader中传入的是文件夹的名称,可以传入多个文件夹名称,该类会自动查找其路径

 传参数到jinja2模板文件

        字典形式传参;

        通过 . 取字典中的key值

        data为list时,模板中可用data.0取第一个值'1.1.1.1'

 

将渲染的模板写入文件

jinja2模板使用for循环

 

jinja2模板使用if 条件判断

jinja2模块化的模板

         使用了 {% include 'port_conf.sub.conf.tpl' -%}

jinja2模板使用过滤器

jinja2 模板继承

   

参考视频链接: 网络工程师之Jinja2模块介绍与实操_哔哩哔哩_bilibili 

  • 11
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Jinja2是一个流行的Python模板引擎,用于生成动态的HTML、XML或其他格式的文档。下面是一些Jinja2的详细语法介绍。 ## 变量 在Jinja2中,可以使用{{}}来包含变量。例如: ``` <p>Hello, {{ name }}!</p> ``` 这里的`name`是一个变量,它将被替换为相应的值。如果变量不存在,它将被替换为空字符串。 ## 过滤器 Jinja2中的过滤器用于修改变量的值。过滤器可以添加到变量后面,使用`|`符号分隔。例如: ``` <p>{{ message|capitalize }}</p> ``` 这里的`capitalize`过滤器将把`message`的第一个字母转换为大写。 ## 控制结构 Jinja2提供了多种控制结构,用于根据条件或循环来渲染模板。 ### if语句 if语句用于根据条件渲染模板块。例如: ``` {% if user %} <p>Welcome, {{ user }}!</p> {% else %} <p>Please log in.</p> {% endif %} ``` 这里的`user`是一个变量,如果它存在,则显示欢迎消息。否则,显示请登录消息。 ### for循环 for循环用于迭代列表或其他可迭代对象,并渲染模板块。例如: ``` <ul> {% for item in items %} <li>{{ item }}</li> {% endfor %} </ul> ``` 这里的`items`是一个列表,`for`循环将迭代它,并为每个项目渲染一个列表项。 ### 宏 宏是一种定义可重用代码块的方法。例如: ``` {% macro hello(name) %} <p>Hello, {{ name }}!</p> {% endmacro %} ``` 这里的`hello`宏定义了一个`name`参数的代码块。它可以在其他模板中使用。 ## 继承 Jinja2支持模板继承,允许您创建一个基础模板,并在其上创建子模板。例如: ``` <!-- base.html --> <html> <head> <title>{% block title %}{% endblock %}</title> </head> <body> {% block content %}{% endblock %} </body> </html> <!-- child.html --> {% extends "base.html" %} {% block title %}My Page{% endblock %} {% block content %} <p>Welcome to my page!</p> {% endblock %} ``` 这里的`child.html`模板扩展了`base.html`模板,并覆盖了`title`块。它还定义了一个`content`块,用于呈现页面内容。 ## 自定义过滤器和函数 Jinja2允许您编写自己的过滤器和函数,以扩展其功能。例如: ``` from jinja2 import Environment def my_filter(value): return value.upper() def my_function(): return "Hello, world!" env = Environment() env.filters['my_filter'] = my_filter env.globals['my_function'] = my_function ``` 这里的`my_filter`函数将字符串转换为大写。它被注册为一个过滤器,并命名为`my_filter`。`my_function`函数被注册为全局函数,并可以在模板中使用。 这些只是Jinja2的一些基本语法。它还具有许多高级功能,如继承、块、变量范围和模板包含。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值