Hopetree
V2EX  ›  Django

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

  •  
  •   Hopetree ·
    Hopetree · Apr 17, 2018 · 5024 views
    This topic created in 2989 days ago, the information mentioned may be changed or developed.

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

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

    19 replies    2018-04-17 15:40:31 +08:00
    SingeeKing
        1
    SingeeKing  
    PRO
       Apr 17, 2018 via iPhone
    django-htmlmin ?
    edsion996
        2
    edsion996  
       Apr 17, 2018
    用 spaceless 也不行吗
    misaka19000
        3
    misaka19000  
       Apr 17, 2018
    去不掉就去不去掉啊。。。又没有人在乎源码好不好看
    PressOne
        4
    PressOne  
       Apr 17, 2018 via Android
    jinja 有这个 bug 吗?怎么没发现过,楼主截个图看下,是不是真是 jinja 的锅?
    wd
        5
    wd  
       Apr 17, 2018 via iPhone
    @PressOne 楼主说的是 drango drango 用的不是 jinja
    turan12
        6
    turan12  
       Apr 17, 2018
    如果是为了减少数据流量的话,试试启用 gzip。
    Wichna
        7
    Wichna  
       Apr 17, 2018
    官方文档上写了,看看这里就知道了 http://jinja.pocoo.org/docs/2.10/templates/#whitespace-control
    SingeeKing
        8
    SingeeKing  
    PRO
       Apr 17, 2018
    @Wichna #7 Django 用的不是 Jinjia。。
    so1n
        9
    so1n  
       Apr 17, 2018
    我记得 django 的文档 模板-设计 api 里面有 可以找一找
    Hopetree
        10
    Hopetree  
    OP
       Apr 17, 2018
    @PressOne 不是 jinja 有 bug,jinja 可以去掉空白,django 默认不是 jinja
    C0VN
        11
    C0VN  
       Apr 17, 2018
    django 自带模版好像没有什么办法
    自己写一个? https://djangosnippets.org/snippets/569/
    guoqiao
        12
    guoqiao  
       Apr 17, 2018
    条件语句不要换行就好了,例如,本来这样:

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

    {% spaceless %}
    {% endspaceless %}


    解决问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5496 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 07:40 · PVG 15:40 · LAX 00:40 · JFK 03:40
    ♥ Do have faith in what you're doing.