当前位置: 首页 > 面试题库 >

从Jinja渲染模板中删除不必要的空格

颛孙航
2023-03-14
问题内容

curl用来观看Web应用程序的输出。当Flask和Jinja渲染模板时,输出中会有很多不必要的空白。它似乎是通过渲染Flask-WTF和Flask-
Bootstrap中的各种组件来添加的。我可以使用剥离它sed,但是有没有办法从Jinja控制它呢?


问题答案:

Jinja有多种控制空白的方法。它 没有 办法美化输出,您必须手动确保所有内容看起来都“不错”。

最广泛的解决方案是一套trim_blocks,并lstrip_blocks在ENV。

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

如果要在文件末尾保留换行符,请设置strip_trailing_newlines = False

您可以使用控制字符来修改标签周围的空格的工作方式。
-始终删除空白,+始终保留空白,覆盖该标记的环境设置。该-角色可以在标签的开头或结尾(或两者)去控制空格这个方向发展,该+字符才有意义,在标签的开始。

  • {%- if ... %} 条之前
  • {%- if ... -%} 条之前和之后
  • {%+ if ... %} 保留之前
  • {%+ if ... -%} 保留之前和之后
  • 记住那{% endif %}是分开对待

控制字符仅适用于 编写的模板。如果您包括模板或使用第三方的宏,则他们写的模板将适用于该零件。



 类似资料:
  • 6.1 渲染模板 一旦你拥有一个模版文件,你可以通过给一个map来给它传递数据。 map是一个变量及赋予的值的集合,模板使用它来得到变量的值,或者对于块标签求值。 它的渲染函数有一个可选的变量键值对map 通过 ctx.Render() 方法来渲染模板,例如: func (r *Render) Serve(ctx *faygo.Context) error { return ctx.Ren

  • Tango默认核心不包含模板渲染功能,在官方中间件中包含两个渲染引擎中间件,一个是 Go标准模板引擎, 另一个是 Pongo2模板引擎

  • 在控制器里模板渲染最常用的方法是display,在CMF中支持如下的模板渲染方式: //不带任何参数 $this->display(); 此种方式系统会自动判断模板路径,并渲染出模板内容,此种方式模板路径是:主题名/应用名/控制器名/操作名+模板文件后缀名; $this->display('edit'); 此种方式表示调用此控制器下的edit操作的模板; $this->display(':in

  • Tpongo2 中间件是 pongo2.v3 模板引擎的 Tango 支持。 安装 go get github.com/tango-contrib/tpongo2 示例 package main import ( "github.com/lunny/tango" "gopkg.in/flosch/pongo2.v3" "github.com/tango-contrib/tp

  •  说明 调用方法: $.f2e.util.render(temp,data,fn,helper); 函数说明: 调用template渲染模板,依赖于artTemplate库 参数说明: 参数名 类型 说明 备注 temp string html字符串 无 data object 参数名 无 fn function 回调函数 无 helper function artTemplate自定义方法 无

  • Renders中间件是一个Go模板引擎的 Tango 中间件。 安装 go get github.com/tango-contrib/renders 示例 type RenderAction struct { renders.Renderer } func (x *RenderAction) Get() { x.Render("test.html", renders.T{