V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Hopetree
V2EX  ›  Django

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

  •  
  •   Hopetree ·
    Hopetree · 2018-04-17 11:15:10 +08:00 · 4449 次点击
    这是一个创建于 2430 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    19 条回复    2018-04-17 15:40:31 +08:00
    SingeeKing
        1
    SingeeKing  
       2018-04-17 11:28:48 +08:00 via iPhone
    django-htmlmin ?
    zjb861107
        2
    zjb861107  
       2018-04-17 11:33:53 +08:00
    用 spaceless 也不行吗
    misaka19000
        3
    misaka19000  
       2018-04-17 11:38:28 +08:00
    去不掉就去不去掉啊。。。又没有人在乎源码好不好看
    PressOne
        4
    PressOne  
       2018-04-17 11:46:46 +08:00 via Android
    jinja 有这个 bug 吗?怎么没发现过,楼主截个图看下,是不是真是 jinja 的锅?
    wd
        5
    wd  
       2018-04-17 11:48:29 +08:00 via iPhone
    @PressOne 楼主说的是 drango drango 用的不是 jinja
    turan12
        6
    turan12  
       2018-04-17 11:50:24 +08:00
    如果是为了减少数据流量的话,试试启用 gzip。
    Wichna
        7
    Wichna  
       2018-04-17 11:52:38 +08:00
    官方文档上写了,看看这里就知道了 http://jinja.pocoo.org/docs/2.10/templates/#whitespace-control
    SingeeKing
        8
    SingeeKing  
       2018-04-17 12:46:43 +08:00
    @Wichna #7 Django 用的不是 Jinjia。。
    so1n
        9
    so1n  
       2018-04-17 12:46:52 +08:00
    我记得 django 的文档 模板-设计 api 里面有 可以找一找
    Hopetree
        10
    Hopetree  
    OP
       2018-04-17 12:50:56 +08:00
    @PressOne 不是 jinja 有 bug,jinja 可以去掉空白,django 默认不是 jinja
    xavierskip
        11
    xavierskip  
       2018-04-17 12:54:04 +08:00
    django 自带模版好像没有什么办法
    自己写一个? https://djangosnippets.org/snippets/569/
    guoqiao
        12
    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
        13
    Hopetree  
    OP
       2018-04-17 13:09:32 +08:00
    @Wichna 我知道 jinja 可以,我问题里面都说了 flask 就是用的 jinja 可以去掉空白,就是加-,django 的模板不是 jinja,这个方法行不通,我试过了
    Hopetree
        14
    Hopetree  
    OP
       2018-04-17 13:17:49 +08:00
    @zjb861107 这个当然是可以的,不过这个过滤器把 HTML 的结构层次都删没了,不是我要的结果,我只想删除那些因为使用了循环产生的空白,而不是想把自己留的删除掉
    amezf
        15
    amezf  
       2018-04-17 14:09:12 +08:00
    把默认的模板引擎换成 jinja2 不就好了
    wizardoz
        16
    wizardoz  
       2018-04-17 14:14:42 +08:00
    谁会关心输出 html 的结构层次?前后端分离的开发场景里面,还要用 webpack 打包一下,瞬间代码全糊了。
    Hopetree
        17
    Hopetree  
    OP
       2018-04-17 15:36:06 +08:00
    @guoqiao 这种并不适合,因为循环和条件语句中间一般都包含了很多 HTML 代码,不可能不换货,算了,反正前端有空行就空行吧,也不影响效果,我也就强迫症问一下,既然没有我想要的解决办法就不弄了
    Hopetree
        18
    Hopetree  
    OP
       2018-04-17 15:36:59 +08:00
    @amezf 这个方式我知道,我之所以问这个就是想看看是否有不通过换模板引擎的方式来解决,看来并没有
    xiwangzishi
        19
    xiwangzishi  
       2018-04-17 15:40:31 +08:00
    base.html

    {% spaceless %}
    {% endspaceless %}


    解决问题
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4702 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:35 · PVG 17:35 · LAX 01:35 · JFK 04:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.