flask中的jinjia2模板引擎详解1
在之前的文章中我们介绍过flask调用jinja2模板的基本使用,这次我们来说一下jinjia2模板的使用
Jinja2 在其是一个 Python 2.4 库之前,被设计 为是灵活、快速和安全的。
模板仅仅是文本文件。它可以生成任何基于文本的格式(HTML、XML、CSV、LaTex 等等)。它并没有特定的扩展名, .html 或 .xml 都是可以的。
模板包含 变量 或 表达式 ,这两者在模板求值的时候会被替换为值。模板中 还有标签,控制模板的逻辑。模板语法的大量灵感来自于 Django 和 Python 。
下面是一个最小的模板,它阐明了一些基础。我们会在文档中后面的部分解释细节:
<htmllang="en">
<head>
<title>My Webpage</title>
</head>
<body>
<ulid="navigation">
{%for item in navigation %}
<li><ahref="{{ 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过滤器
运行效果:
语句过滤器
上面说的是用过滤器过滤一个变量,下面来说一下如何在代码块中使用过滤器,上例子:
{%filterupper%}
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获取源码下载地址。
flask中的jinjia2模板引擎详解1相关推荐
- flask中jinjia2模板引擎详解3
接上文 模板继承 Jinji2中的模板继承是jinjia2比较强大的功能之一. 模板继承可以定义一个父级公共的模板,把同一类的模板框架定义出来共享. 这样做一方面可以提取共享代码,减少代码冗余和重复的 ...
- Flask 中的Jinja2模板引擎
Flask 中的Jinja2模板引擎 在 Web 项目中,前端的显示效果是通过 HTML 语言来实现的,后端的视图函数将数据或模板文件返回给前端. 前端接收到后端返回的结果后,需要通过模板引擎来渲染页 ...
- Flask HTML模板引擎详解
模板引擎说明: 模板文件就是按照一定的规则书写的展示效果的HTML文件模板引擎就是负责按照指定规则进行替换的工具模板引擎选择jinja2. 一.渲染模板的方法 1.将渲染的模板进行返回 1 rende ...
- art-template模板引擎详解
1. 模板引擎 art-template中文文档:https://www.kancloud.cn/lanju/art-template/1500276 1.1 Ajax 项目中存在的问题 数据和HTM ...
- JavaScript模板引擎详解
JavaScript模板引擎是一种用于生成HTML.XML和其他文本格式的工具,它将特定的模板语法转换为相应的文本输出,通常用于前端开发中动态生成页面内容.下面是一个JavaScript模板引擎的详细 ...
- Thymeleaf模板引擎详解
Thymeleaf 是一个流行的模板引擎,该模板引擎采用 Java 语言开发.能够处理html xml css cs等内容.此外,在Java体系下,还有类似的模板引擎如jsp,FreeMarker等. ...
- thymeleaf模板引擎详解1
做了几年的java web开发,我使用最多的模板引擎应该是freemarket和JSP了,不过最近公司开始引入springboot作为开发的框架,这让我接触到了一个新的模板引擎,也就是thymelea ...
- php ci框架 模板引擎,详解CodeIgniter框架实现的整合Smarty引擎DEMO
CodeIgniter框架实现的整合Smarty引擎DEMO示例 本文实例讲述了CodeIgniter框架实现的整合Smarty引擎.分享给大家供大家参考,具体如下: Smarty的模板机制很强大,一 ...
- EasyJWeb Tools中代码自动生成引擎详解
在EasyJWeb-0.6.0推出来以后,很多网友对其中的代码生成部分非常感兴趣,并来信问了一些如何使用easyjwebtools.如何支持多表生成.生成页面的定制.业务逻辑的定制等很多问题.下面以我 ...
- twig模板引擎详解(下集:开发者篇)【twig模板引擎中文使用教程】
上集重点介绍了twig模板的使用,供模板设计者阅读,下集供php开发者阅读,讲解如何调用和扩展twig,这一篇安装和采用版本将衔接上集内容. Twig_Environment: 该类的实例是twig模 ...
最新文章
- 发条js调试工具_小工具大帮手,利用 @open-node/antman 实现 node.js 进程线上调试,无须重启...
- 霍夫变换直线检测基本原理
- js中用到的正则表达式
- bash特性之四、五
- 轻量级锁_并发编程实战05:锁的状态
- ajax封装 使用,AJAX封装类使用指南
- [UVA315]Network(tarjan, 求割点)
- C#中通过代码控制IIS服务重启
- linux和Windows之间互传文件
- 多面集的表示定理 (Representation / Resolution / Caratheodory theorem of polyhedral Sets)
- Python中的装饰器及@用法详解
- 自己怎么制作地图,如何绘制电子版地图?
- dnspod.cn 动态域名客户端
- 机器学习之加州房价预测(一)
- 定位弹窗软件----找到真凶并做后续防御
- 【温故而知新-Javascript】使用 Ajax
- 迅时MX8(FXO)8口语音网关连接Elastix+服务器配置
- #Windows server 2019将辅助域控升级为主域控
- 模拟HTTP请求, POST方法(附源码)
- 巴纳姆效应心理 学对号入座 营销中惯用的营销心理学
热门文章
- 根据身份证判断男女(通用)
- error: passing ‘const xxx’ as ‘this’ argument discards qualifiers [-fpermissive]的解决方案
- 数据库数据模型理解 概念数据模型 逻辑数据模型 物理数据模型区别和联系
- 08.音频系统:第006课_音频系统HAL分析:第001节_HAL之框架
- Python 玩转数据 3 - NumPy ndarray Array Indexing, Slicing, Striding, View Subarray,Copy Subarray
- Django 使用 squashmigrations 合并 migration 文件
- 微信中扫一扫二维码唤起手机默认浏览器的实现方式
- 各层电子数排布规则_电子层排布,电子的排布规律
- 如何制作一寸、二寸、六寸照片。以后不用再去照相馆了!!! 转~版本更新...
- 【地理坐标系、大地坐标系与地图投影与重投影详解】