博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flask模板应用-空白控制 --
阅读量:4604 次
发布时间:2019-06-09

本文共 1246 字,大约阅读时间需要 4 分钟。

模板应用实践

空白控制

在实际输出的HTML文件中,模板中的jinja2语句、表达式和注释会保留移除后的空行。

例如下面的代码:

{% set user.age = 23 %}
{% if urer.age > 10 %}     {
{ user.name }} can play the game
{% if user.name >20 %}     {
{ user.name }}can paly the game only 10 minutes!
{% endif %}

jinja2语句中的代码缩进并不是必须的,添加缩进可以增加可读性。

实际输出的HTML代码:
{
{ user.name }} can play the game
 
{
{ user.name }}can paly the game only 10 minutes!

如果想再渲染时自动去掉空行,可以在定界符内侧添加减号。比如{%-endfor%}会移除该语句前的空白,同理,在右边的定界符内侧添加减号将移除该语句后的空白:

{% set user.age = 23 -%} {% if urer.age > 10 -%}     {
{ user.name }} can play the game
{% if user.name >20 -%}     {
{ user.name }}can paly the game only 10 minutes!
{%- endif %}

现在输出的HTML代码如下:

{
{ user.name }} can play the game
{
{ user.name }}can paly the game only 10 minutes!

 

除了在模板中使用减号来控制空白,也可以使用模板环境对象提供的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输出,因为多余的空白并不影响浏览器的解析

转载于:https://www.cnblogs.com/xiaxiaoxu/p/10468038.html

你可能感兴趣的文章
java多线程入门学习(一)
查看>>
基于 Web 的 Go 语言 IDE - Wide 1.1.0 公布!
查看>>
nyist oj 138 找球号(二)(hash 表+位运算)
查看>>
Movidius软件手册阅读 2017-09-04
查看>>
ytu 1910:字符统计(水题)
查看>>
201671030110 姜佳宇 实验三作业互评与改进
查看>>
mysql-5.6.15 开启二进制文件
查看>>
python的沙盒环境--virtualenv
查看>>
软件自动化测试——入门、进阶与实战
查看>>
BZOJ1878 [SDOI2009]HH的项链 树状数组 或 莫队
查看>>
BZOJ3675 [Apio2014]序列分割 动态规划 斜率优化
查看>>
Django extend(继承)模板标签
查看>>
2016.10.24 继续学习
查看>>
产品功能对标 - 服务授权管理
查看>>
各地IT薪资待遇讨论
查看>>
splay入门
查看>>
带CookieContainer进行post
查看>>
C语言学习笔记--字符串
查看>>
CSS-上下文选择器
查看>>
ionic repeat 重复最后一个时要执行某个函数
查看>>