flask模板应用-空白控制
模板应用实践
空白控制
在实际输出的HTML文件中,模板中的jinja2语句、表达式和注释会保留移除后的空行。
例如下面的代码:
{% set user.age = 23 %}
{% if urer.age > 10 %}
<i>{{ user.name }} can play the game</i>
{% if user.name >20 %}
<i>{{ user.name }}can paly the game only 10 minutes! </i>
{% endif %}
jinja2语句中的代码缩进并不是必须的,添加缩进可以增加可读性。
实际输出的HTML代码:
<i>{{ user.name }} can play the game</i>
<i>{{ user.name }}can paly the game only 10 minutes! </i>
如果想再渲染时自动去掉空行,可以在定界符内侧添加减号。比如{%-endfor%}会移除该语句前的空白,同理,在右边的定界符内侧添加减号将移除该语句后的空白:
{% set user.age = 23 -%}
{% if urer.age > 10 -%}
<i>{{ user.name }} can play the game</i>
{% if user.name >20 -%}
<i>{{ user.name }}can paly the game only 10 minutes! </i>
{%- endif %}
现在输出的HTML代码如下:
<i>{{ user.name }} can play the game</i>
<i>{{ user.name }}can paly the game only 10 minutes! </i>
除了在模板中使用减号来控制空白,也可以使用模板环境对象提供的trim_blocks和lstrip_blocks属性设置,前者用来删除jinja2语句后的第一个空行,后者则用来删除jinja2语句所在行之前的空格和制表符(tab):
app.jinja_env.trim_blocks = True
app.jinja_env.lstrip_blocks = True
trim_blocks中的block指的是使用{% … %}定界符的代码块,与模板继承中的块无关。
需要注意,宏内的空白行为不受trim_blocks和lstrip_blocks属性控制,我们需手动设置,例如:
{% macro qux(amount=1) %}
{% if amount ==1 -%}
I am qux.
{% elif amount > 1 -%}
{% endmacro %}
事实上,我们没有必要严格控制HTML输出,因为多余的空白并不影响浏览器的解析
flask模板应用-空白控制的更多相关文章
- flask模板的基本用法(定界符、模板语法、渲染模板),模板辅助工具(上下文、全局对象、过滤器、测试器、模板环境对象)
flask模板 在动态web程序中,视图函数返回的HTML数据往往需要根据相应的变量(比如查询参数)动态生成. 当HTML代码保存到单独的文件中时,我们没法再使用字符串格式化或拼接字符串的当时在HTM ...
- Flask模板注入
Flask模板注入 Flask模板注入漏洞属于经典的SSTI(服务器模板注入漏洞). Flask案例 一个简单的Flask应用案例: from flask import Flask,render_te ...
- 实验2、Flask模板、表单、视图和重定向示例
实验内容 1. 实验内容 表单功能与页面跳转功 能是Web应用程序的基础功能,学习并使用他们能够更好的完善应用程序的功能.Flask使用了名为Jinja2的模板引擎,该引擎根据用户的交互级别显示应用程 ...
- flask模板,路由,消息提示,异常处理
1.flask的路由与反向路由 from flask import Flask, request, url_for app = Flask(__name__) @app.route('/') def ...
- Flask - 模板语言jinja2 和render_template高级用法
目录 Flask - 模板语言jinja2 和render_template高级用法 一. 字典传递至前端 二. 列表传入前端Jinja2 模板的操作: 三. 大字典传入前端 Jinja2 模板 四. ...
- Flask模板渲染
目录 Flask模板渲染 Jinja2模板引擎简介 模板 Jinja2 模板变量 变量 控制结构 宏,类似Python代码中的函数 模板继承 包含(Include) 过滤器 链式调用 常见内建过滤器 ...
- flask中模板日期格式控制和jinja2中模板格式控制
1.flask的模块语言采用的是jinja2,首先说一下jinja2中的模板格式控制的使用,即模板自定义filters的使用. python的脚本如下(采用的是格式显示日期): 1 from jinj ...
- flask模板
做为python web开发领域的一员,flask跟Django在很多地方用法以都是相似的,比如flask的模板 模板就是服务器端的页面,在模板中可以使用服务端的语法进行输出控制 1.模板的工作原理 ...
- flask模板结构组织(局部模板、宏、模板继承)
模板结构组织 除了使用函数.过滤器等工具控制模板的输出外,jinja2还提供了一些工具来在宏观上组织模板内容. 局部模板 在Web程序中,我们通常会为每一类页面编写一个独立的模板.比如主页模板.用户资 ...
随机推荐
- awk数组
对于awk '!a[$3]++',需要了解3个知识点 1.awk数组知识,不说了2.awk的基本命令格式 awk 'pattern{action}' 省略action时,默认action是{print ...
- java实现消息队列的两种方式
https://blog.csdn.net/fenfenguai/article/details/79257928
- 【托业】【新托业TOEIC新题型真题】学习笔记13-题库四-P7
>counterpart 对应的人 >Master of Business Administration 工商管理学硕士 >superb 极好的 >executive 执行总监 ...
- jmeter测试文件上传接口报错:connection reset by peer: socket write error
最近在对文件上传接口性能测试时,设置150线程数并发时,总会出现以下错误:connection reset by peer: socket write error 在网上搜索了一下,得到的原因有这些: ...
- 安装与破解PyCharm专业版
安装与破解PyCharm专业版(有两种方法) 一.安装与破解PyCharm专业版 1.安装pycharm(建议安装python3) 这是网址:(https://www.jetbrains.com/py ...
- SELinux介绍
SELinux概念 安全加强的Linux,早期的Linux系统安全由系统管理员控制.SELinux就是一些安全规则的集合,类似于人类生活中的法律. DAC: 自由访问控制(以前的linux版本) ...
- ELKStack的基础入门和中文指南
一.ELKStack的中文指南 redhat系列配置repo源 rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch vi / ...
- 切换py环境【转载】
1.转自:https://blog.csdn.net/jasonfqw/article/details/72974187 方法不错的,比较简单. $ alias python='/usr/bin/py ...
- 【EatBook】-NO.3.EatBook.3.JavaArchitecture.2.001-《架构探险:从零开始写Java Web框架》-
1.0.0 Summary Tittle:[EatBook]-NO.3.EatBook.3.JavaArchitecture.2.001-<架构探险:从零开始写Java Web框架>- S ...
- Dart async proc
//dart import 'dart:io';import 'dart:async'; Future printDailyNewsDigest1() { print('A:'); File file ...