在之前的文章中我们介绍过flask调用jinja2模板的基本使用,这次我们来说一下jinjia2模板的使用

Jinja2 在其是一个 Python 2.4 库之前,被设计 为是灵活、快速和安全的。

模板仅仅是文本文件。它可以生成任何基于文本的格式(HTML、XML、CSV、LaTex 等等)。 它并没有特定的扩展名, .html 或 .xml 都是可以的。

模板包含 变量 或 表达式 ,这两者在模板求值的时候会被替换为值。模板中 还有标签,控制模板的逻辑。模板语法的大量灵感来自于 Django 和 Python 。

下面是一个最小的模板,它阐明了一些基础。我们会在文档中后面的部分解释细节:

<html lang="en">
<head>
<title>My Webpage</title>
</head>
<body>
<ul id="navigation">
{% for item in navigation %}
<li><a href="{{ item.href }}">{{ item.caption }}</a></li>
{% endfor %}
</ul> <h1>My Webpage</h1>
{{ a_variable }}
</body>
</html>

通过上面的模板我们能看到主要有两类标签组成 {{  }}和{% %}这两类标签分别用来包含变量和表达式

如何访问变量

如果传入的变量是对象,要访问对象中的属性,可以用下面两种方式:

{{obj.prop}}

{{obj[“prop”]}

两种方式都会去检查obj对象中有没有prop这个属性以及其中的其它变量,不同的是obj.prop先检查属性,obj[“prop”]先检查变量。

赋值

使用set关键字为变量设置值

<h1>Set为变量赋值</h1>
{% set name = 'Han Mei Mei' %}
{{ name }}

运行效果

变量过滤器

变量可以通过过滤器进行修改,变量和过滤器中间用|进行分隔,使用的基本格式是{{变量|过滤器1|过滤器2}},jinja2内置了很多过滤器,通过这些内置过滤器,可以进行变量的修改,内置过滤器可以参考 http://docs.jinkan.org/docs/jinja2/templates.html#builtin-filters ,比如我们要把变量转成大写,可以用upper过滤器

运行效果:

语句过滤器

上面说的是用过滤器过滤一个变量,下面来说一下如何在代码块中使用过滤器,上例子:

{% filter upper %}

    This text becomes uppercase

{% endfilter %}

运行效果:

is关键字进行变量判断

is关键字用来在表达式中测试变量的值是否满足某条件。比如判断变量是否是数字,就可以用

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

运行结果:

当我们修改一下代码,成下面的格式,限制输入为int:

@app.route("/tmpl/<int:name>")
def renderTmpl(name=1):
return render_template("hello.html",name=name) 

再次运行:

Flask内置的is可用的函数参考 : http://docs.jinkan.org/docs/jinja2/templates.html#builtin-tests

欢迎关注“挨踢学霸”同名公众号, 回复jinjia2-1获取本文源码下载地址。

最新文章

  1. 在Ubuntu和Linux Mint上安装Oracle JDK
  2. ASP.NET 5 单元测试中使用依赖注入
  3. .Net 中的反射(动态创建类型实例) - Part.4
  4. JAVA实现的微信扫描二维码支付
  5. 一个例子深入理解ClassLoader
  6. T4模版生成多个实体文件时,提示找不到 Host
  7. UCOS2_STM32F1移植详细过程(四)
  8. IOS动画隐式,显式,翻页
  9. WP开发笔记——程序的退出方法
  10. [Javascript] Implement zip function
  11. java基础知识----IO篇
  12. jquery通过数值改变球大小
  13. AbstractQueuedSynchronizer AQS框架源码剖析
  14. C# 如何添加Excel页眉页脚(图片、文字、奇偶页不同)
  15. 基于 CODING 的 Spring Boot 持续集成项目
  16. LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏。
  17. 如何安装整个linux系统中所需要的mp3播放库插件? 可以在安装rpmfusion仓库后直接通过dnf install进行按照就可以了
  18. 简单理解RNA-seq
  19. pt-table-checksum 3.0.4检测不出主从差异数据
  20. C# ie通过打印控件点打印,总是弹出另存为xps的对话框

热门文章

  1. JS题目
  2. 怎么查看mysql的安装目录
  3. 第一个简单的maven项目
  4. 函数式编程--为什么会出现lambda表达式?
  5. Part 2:模型与后台管理admin站点--Django从入门到精通系列教程
  6. C# String StringBuilder 区别
  7. 企业级Docker私有仓库之Harbor部署(http)
  8. htmlcss渐变及兼容性
  9. MUI 图片上传实现
  10. c#结构体、打他table、excel、csv互转