django 模板循环和条件语句造成前端大量的空白行,怎么解决?

2018-04-17 11:15:10 +08:00
 Hopetree

如题,用过 django 的应该都知道,是用来一些条件语句之后前端会有大片的空白行出现,请问怎么样可以消除这些空白行呢?

我看 flask 使用的 jinja 模板是可以在循环里面加一个-来消除的,难道 django 一定要去更换模板才能消除吗?

4291 次点击
所在节点    Django
19 条回复
SingeeKing
2018-04-17 11:28:48 +08:00
django-htmlmin ?
zjb861107
2018-04-17 11:33:53 +08:00
用 spaceless 也不行吗
misaka19000
2018-04-17 11:38:28 +08:00
去不掉就去不去掉啊。。。又没有人在乎源码好不好看
PressOne
2018-04-17 11:46:46 +08:00
jinja 有这个 bug 吗?怎么没发现过,楼主截个图看下,是不是真是 jinja 的锅?
wd
2018-04-17 11:48:29 +08:00
@PressOne 楼主说的是 drango drango 用的不是 jinja
turan12
2018-04-17 11:50:24 +08:00
如果是为了减少数据流量的话,试试启用 gzip。
Wichna
2018-04-17 11:52:38 +08:00
官方文档上写了,看看这里就知道了 http://jinja.pocoo.org/docs/2.10/templates/#whitespace-control
SingeeKing
2018-04-17 12:46:43 +08:00
@Wichna #7 Django 用的不是 Jinjia。。
so1n
2018-04-17 12:46:52 +08:00
我记得 django 的文档 模板-设计 api 里面有 可以找一找
Hopetree
2018-04-17 12:50:56 +08:00
@PressOne 不是 jinja 有 bug,jinja 可以去掉空白,django 默认不是 jinja
xavierskip
2018-04-17 12:54:04 +08:00
django 自带模版好像没有什么办法
自己写一个? https://djangosnippets.org/snippets/569/
guoqiao
2018-04-17 13:04:13 +08:00
条件语句不要换行就好了,例如,本来这样:

```
{{ if user.is_authenticated }}
Hi, {{user.username}}!
{{ endif }}
```
改成:
```
{{ if user.is_authenticated }}Hi, {{user.username}}!{{ endif }}
```
Hopetree
2018-04-17 13:09:32 +08:00
@Wichna 我知道 jinja 可以,我问题里面都说了 flask 就是用的 jinja 可以去掉空白,就是加-,django 的模板不是 jinja,这个方法行不通,我试过了
Hopetree
2018-04-17 13:17:49 +08:00
@zjb861107 这个当然是可以的,不过这个过滤器把 HTML 的结构层次都删没了,不是我要的结果,我只想删除那些因为使用了循环产生的空白,而不是想把自己留的删除掉
amezf
2018-04-17 14:09:12 +08:00
把默认的模板引擎换成 jinja2 不就好了
wizardoz
2018-04-17 14:14:42 +08:00
谁会关心输出 html 的结构层次?前后端分离的开发场景里面,还要用 webpack 打包一下,瞬间代码全糊了。
Hopetree
2018-04-17 15:36:06 +08:00
@guoqiao 这种并不适合,因为循环和条件语句中间一般都包含了很多 HTML 代码,不可能不换货,算了,反正前端有空行就空行吧,也不影响效果,我也就强迫症问一下,既然没有我想要的解决办法就不弄了
Hopetree
2018-04-17 15:36:59 +08:00
@amezf 这个方式我知道,我之所以问这个就是想看看是否有不通过换模板引擎的方式来解决,看来并没有
xiwangzishi
2018-04-17 15:40:31 +08:00
base.html

{% spaceless %}
{% endspaceless %}


解决问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/447433

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX