Django 如何截断文本并使用文本的第二部分?

Django 如何截断文本并使用文本的第二部分?,django,django-templates,Django,Django Templates,我在研究一个小问题。 我在Django模板上得到一个文本。要点是截断该文本,并将文本的第二部分添加到其他标记中。 我读到: {{ value|truncatechars_html:x }} 它可以工作,但我不能使用截断文本的第二部分 如果有人有想法…谢谢 使用切片-。python中的字符串也是字符列表,因此可以执行以下操作: First part is {{ value|slice:":x" }} Second part is {{ value|slice:"x+1:" }} def you

我在研究一个小问题。 我在Django模板上得到一个文本。要点是截断该文本,并将文本的第二部分添加到其他标记中。 我读到:

{{ value|truncatechars_html:x }}
它可以工作,但我不能使用截断文本的第二部分

如果有人有想法…谢谢

使用切片-。python中的字符串也是字符列表,因此可以执行以下操作:

First part is {{ value|slice:":x" }}
Second part is {{ value|slice:"x+1:" }}
def your_truncate_filter(value, arg):
    ... # your code for splitting
    data = {}
    data['first'] = "....." # first part of string with html tags !!!
    data['second'] = "....." # second part of string
    return data
{% with parts=value|your_truncate_filter:x %}
     {{ parts.first }}
     {{ parts.second }}

{% endwith %}
然而,如果您需要保留一些html代码,slice将不会这样做。为此,您需要编写自己的自定义标记(您可以从truncate chars查看代码),该标记返回两个值—字符串的每个部分一个值

假设您的筛选器返回如下内容:

First part is {{ value|slice:":x" }}
Second part is {{ value|slice:"x+1:" }}
def your_truncate_filter(value, arg):
    ... # your code for splitting
    data = {}
    data['first'] = "....." # first part of string with html tags !!!
    data['second'] = "....." # second part of string
    return data
{% with parts=value|your_truncate_filter:x %}
     {{ parts.first }}
     {{ parts.second }}

{% endwith %}
您可以在模板中访问它,如下所示:

First part is {{ value|slice:":x" }}
Second part is {{ value|slice:"x+1:" }}
def your_truncate_filter(value, arg):
    ... # your code for splitting
    data = {}
    data['first'] = "....." # first part of string with html tags !!!
    data['second'] = "....." # second part of string
    return data
{% with parts=value|your_truncate_filter:x %}
     {{ parts.first }}
     {{ parts.second }}

{% endwith %}

我不认为有一个内置的django过滤器。定义自己的自定义模板标记并使用该过滤器@用户3282479谢谢!