接上文

注释的使用

在jinjia2模板中,使用{# #}进行代码注释,如下所示

运行后发现,注释不会被render出来

去掉空行

两种方法可以去掉jinjia2模板中的空白行,一是设置jinjia2的环境变量,如下

app.jinja_env.trim_blocks = True
app.jinja_env.lstrip_blocks = True

另一种是通过在模板的逻辑块中添加-号

{% if name -%}

  <h1>Hello {{ name | upper }}!</h1>

    <h1>name is number? {% if name is number %}true{% else  %}false{% endif %}</h1>

  {# 这是一大堆注释 #}

{%- else -%}

  <h1>Hello World!</h1>

{% endif %}
 

-在前面说明要除去前面的空行,在后面除去后面的空行,两边都加前后都去掉空白行。

注:-是标签的一部分,所以中间不要有空格

下面这种表达是不合法的:

{% - if xxx %}

转义

想要在模板中输出原生jinjia2语法,需要进行转义,转义有两种方法

一种是通过变量表达式直接输出语言关键字,比如

{{ "{{ 通过转义输出变量表达式 }}" }}

{{ "{%  通过转义输出逻辑表达式 %}" }}

转出效果:

另一种是通过raw关键字进行大块转义

{% raw %}

    <ul>

    {% for item in seq %}

        <li>{{ item }}</li>

    {% endfor %}

    </ul>

{% endraw %}

运行效果:

行语句

行语句就是把一行当成是jinjia2的语句行,设置一下jinjia2的line_statement_prefix变量即可实现。比如设置为“#”
app.jinja_env.line_statement_prefix="#"

同时在模板中加入行语句

# if True
<p>行语句输出</p>
# endif

运行效果:

 

行注释

通过设置line_comment_prefix可以实现行注释,步骤跟行语句一样,比如,我们设置:

app.jinja_env.line_comment_prefix = "$"

在模板中加入注释

$行注释,不输出

运行后,查看源码,发现注释没有被输出

关注“挨踢学霸”微信公众号,回复“jinjia2-2“ 获取本文源代码

flask中jinjia2模板使用详解2的更多相关文章

  1. flask中jinjia2模板引擎详解4

    接上文 For循环 和其它编程语言一样,for用来编辑列表中的项.下面以一个例子来说明for在flask的jinjia2模板中的使用. 创建一个模板list.html 代码如下{% extends & ...

  2. flask中jinjia2模板引擎详解3

    接上文 模板继承 Jinji2中的模板继承是jinjia2比较强大的功能之一. 模板继承可以定义一个父级公共的模板,把同一类的模板框架定义出来共享. 这样做一方面可以提取共享代码,减少代码冗余和重复的 ...

  3. flask中jinjia2模板引擎使用详解1

    在之前的文章中我们介绍过flask调用jinja2模板的基本使用,这次我们来说一下jinjia2模板的使用 Jinja2 在其是一个 Python 2.4 库之前,被设计 为是灵活.快速和安全的. 模 ...

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

    接上文 宏 可以理解为函数,即把一些常用的模板片段做好封装,以便于重用,减少工作量和维护难度. 宏的定义很简单: {%macro xxx()%} ##这里写内容 {%endmacro%}   下面引用 ...

  5. vue-cli 中的 webpack 配置详解

    本篇文章主要介绍了 vue-cli 2.8.2 中的 webpack 配置详解, 做个学习笔记 版本 vue-cli 2.8.1 (终端通过 vue -V 可查看) vue 2.2.2 webpack ...

  6. C#中string.format用法详解

    C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...

  7. c++中vector的用法详解

    c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间 ...

  8. 011-Scala中的apply实战详解

    011-Scala中的apply实战详解 object中的apply方法 class中的apply方法 使用方法 apply方法可以应用在类或者Object对象中 class类 必须要创建实例化的类对 ...

  9. C# WinForm 中 MessageBox的使用详解

    1.C# WinForm 中 MessageBox的使用详解:http://www.cnblogs.com/bq-blog/archive/2012/07/27/2611810.html

随机推荐

  1. junit设计模式--适配器模式

    适配器(Adapter)模式 在软件系统中,由于环境的变化,常常需要将"一些现存的对象"放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的.那么如何应对这种" ...

  2. 流API--缩减操作

    在Stream流操作中,比如说min(),max(),count()方法,这几个操作都会将一个流缩减成一个值,流API将这些操作称为特例缩减.另外,流API同时泛华了缩减这种概念,提供了reduce( ...

  3. 输入和输出--File类

    输入和输出 写在前面的:Java中的输入和输出还是比较重要的,之前我都没想整理IO和多线程的,但是在研究后面的好多东西时候,经常要读取资源文件,这个时候就不得不回过头来整理IO了.要玩熟Java的输入 ...

  4. hibernate 常用主键生成策略与配置

    <id name="id" column="id"> <generator class="assigned" /> ...

  5. struts 中的addFieldError

    addFieldError("字段名","错误信息")给一个字段(属性)添加错误消息 在action中添加 this.addFieldError("p ...

  6. android之间传递list

    Intent intent = new Intent(getActivity(), Activity_Character.class); intent.putExtra("mlTrait&q ...

  7. thinkphp5学习(一)——thinkphp5的目录结构与开发规范

    开发规范: 目录和文件 目录使用小写+下划线: 类库.函数文件统一以.php为后缀: 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致: 类文件采用驼峰法命名(首字母大写),其它文 ...

  8. unix网络编程第2版(卷1)_第6章_同步_异步

    第6章 I/O复用:select和poll函数 6.1概述 在5.12节中,我们看到TCP客户同时处理两个输入:标准输入和TCP套接口.我们遇到的问题是客户阻塞于(标准输入上的)fgets调用,而服务 ...

  9. re模块与正则表达式

    一.正则表达式概念 正则表达式,又称正规表示式.正规表示法.正规表达式.规则表达式.常规表示法(英语:Regular Expression,在代码中常简写为regex.regexp或RE),是计算机科 ...

  10. cordova+vue 项目打包成Android(apk)应用

    现在使用vue开发的项目越来越多,使用vue开发的移动端打包就成了最大的问题.现在前端打包方案有好多种,但是综合来说,我比较喜欢用cordova来进行Android和ios的打包,配置完成之后,每次只 ...