我有以下模板代码:
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">{{ article.title }}</h3>
</div>
<div class="panel-body">
{{ article.content }} <!--will display the full text-->
</div>
我打算显示内容的前200个字符,例如:
{{ article.content|length=200 }}
如何在文本上实现这样的约束。
答案 0 :(得分:4)
此处有两个模板过滤器非常有用:slice
和truncatechars
。
{{ variable | slice:":200" }}
将可迭代(此处为字符串)限制为给定数字,例如:
truncatechars
而{{ variable | truncatechars:"200" }}
大致相同,除非字符串长于上限(此处为200),它将切入上限减去三,并添加一个ellise:
variable = "foobarqux"
对于较小的上限,为了证明差异,对于字符串{{ variable | slice:":6" }} # foobar
{{ variable | truncatechars:"6" }} # foo...
我们会得到:
truncatechars
这两者因此不同:后者给出了文本提示,实际上有更多内容。当然,这取决于过滤器满足您需求的具体情况。
一个好处是你可以用slice
来模仿 {{ variable | truncatechars:":6" }}
:
{% if variable|length > 6 %}{{ variable|slice:":3" }}...{% else %}{{ variable }}{% endif %}
相当于:
truncatechars
但它当然不是最优雅的解决方案:如果你想要'level': 'DEBUG'
行为,最好使用特定的过滤器。
答案 1 :(得分:3)
您可以使用truncatechars
过滤器:
{{ article.content|truncatechars:200 }}