如何在 Django 模板引擎上截断/切片字符串?
Posted
技术标签:
【中文标题】如何在 Django 模板引擎上截断/切片字符串?【英文标题】:How to truncate/slice strings on Django Template Engine? 【发布时间】: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个字符。
需要帮助才能做到这一点。
谢谢
【问题讨论】:
【参考方案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
【讨论】:
我正在使用 django 1.3,这可能适用 >django 1.4 啊好的,你可以基于 django 创建自己的过滤器,例如github.com/django/django/blob/master/django/template/…【参考方案3】:您也可以使用 'cut',它是 django 内置模板的一部分
例如如果
file.pdf.name
给出'store/pdfs/verma2010.pdf'
file.pdf.name | cut:'store/pdfs/'
会给'verma2010.pdf'
【讨论】:
以上是关于如何在 Django 模板引擎上截断/切片字符串?的主要内容,如果未能解决你的问题,请参考以下文章