【问题标题】:How to truncate/slice strings on Django Template Engine?如何在 Django 模板引擎上截断/切片字符串?
【发布时间】:2013-07-09 21:18:47
【问题描述】:

index.html

<td>{% if place or other_place or place_description%}{{ place}} {{ other_place}} {{place_description}}</td>

这是显示模板中的所有数据。如果字符串长度超过 80,我想截断它。

条件是, 1.如果place变量超过80个字符,应将其截断,不需要显示其他两个变量,如other_place和place_description。

2.如果place变量和other_place变量超过80个字符,这种情况下应该从place_variable截断,不需要显示place_description变量。

3.如果这三个都是他们的,并且第80个字符是由place_description组成的,需要从他们截断。

所有字段都不是强制性的,所以无论显示什么字段,它都应该只显示80个字符。

需要帮助才能做到这一点。

谢谢

【问题讨论】:

    标签: django django-views django-forms django-templates


    【解决方案1】:

    对于 pre-django 1.4,您可以使用 slice

    {% if place or other_place or place_description%}
        {% with place|add:other_place|add:place_description as pl %}
            {% if pl|length > 80 %}
                {{pl|slice:80}}...
            {% else  %}
                {{pl }}
            {% endif %}
        {% endwith %}
    {% endif %}
    

    如果您使用的是 django 1.4 或更高版本,

    你可以使用truncatechars

    {% if place or other_place or place_description%}
        {% with place|add:other_place|add:place_description as pl %}
           {{pl|truncatechars:80}}
        {% endwith %}
    {% endif %}
    

    【讨论】:

    • 我会使用{{ value|truncatechars:80 }} 模板过滤器而不是切片,因为它会添加省略号并将字符串表示为截断
    • 啊,对不起!那就继续吧! :)
    • @karthikr,我不能使用 truncatechars,这在 django 1.3 中不受支持
    • 我收到此模板语法错误“渲染时捕获 AttributeError:'int' 对象没有属性 'split'”
    • 它可能在代码的其他地方。如果您删除此 sn-p ,您不会收到此错误?
    【解决方案2】:

    您可能可以使用 add/truncatechars 的组合来做到这一点,例如

    {{ place|add:other_place|add:place_description|truncatechars:80}}
    

    【讨论】:

    【解决方案3】:

    您也可以使用 'cut',它是 django 内置模板的一部分

    例如如果

    {{ file.pdf.name}}
    

    给出'store/pdfs/verma2010.pdf'

    {{ file.pdf.name | cut:'store/pdfs/'}}
    

    会给'verma2010.pdf'

    【讨论】:

      猜你喜欢
      • 2013-02-07
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      • 2020-11-20
      • 2011-04-24
      • 2017-03-22
      • 1970-01-01
      • 2015-09-08
      相关资源
      最近更新 更多