텍스트를 자르는 Django 템플릿 태그


88

Django에는 truncatewords주어진 단어 수에서 텍스트를 자르는 템플릿 태그 가 있습니다. 그러나 truncatechars 같은 것은 없습니다 .

주어진 문자 길이 제한에서 템플릿의 텍스트를 자르는 가장 좋은 방법은 무엇입니까?

답변:



61
{{ value|slice:"5" }}{% if value|length > 5 %}...{% endif %}

최신 정보

버전 1.4부터 Django에는이를위한 기본 제공 템플릿 태그 가 있습니다.

{{ value|truncatechars:9 }}

1.4 이전 Django로 작업하고 있기 때문에 이것이 정확히 필요한 것입니다. 감사!
Trey Piepmeier

1
truncatechars필터는 기본적으로 타원 문자를 추가합니다.
cnfw

10

나는 (잘린) 문자열의 (마지막 단어) 끝에 "..."를 추가하는 자체 템플릿 필터를 만들었습니다.

from django import template
register = template.Library()

@register.filter("truncate_chars")
def truncate_chars(value, max_length):
    if len(value) > max_length:
        truncd_val = value[:max_length]
        if not len(value) == max_length+1 and value[max_length+1] != " ":
            truncd_val = truncd_val[:truncd_val.rfind(" ")]
        return  truncd_val + "..."
    return value

2
이제 기본값은 django입니다.
Pulkit Sharma

6

사용자 정의 템플릿 태그를 생성하려면 Django util Truncator 를 사용하는 것이 좋습니다. 다음은 샘플 사용입니다.

>>> from django.utils.text import Truncator
>>> Truncator("Django template tag to truncate text")
<Truncator: <function <lambda> at 0x10ff81b18>>
>>>Truncator("Django template tag to truncate text").words(3)
u'Django template tag...'
Truncator("Django template tag to truncate text").words(1)
u'Django...'
Truncator("Django template tag to truncate text").chars(20)
u'Django template t...'
Truncator("Django template tag to truncate text").chars(10)
u'Django ...'

그런 다음 템플릿 태그에 넣을 수 있습니다.

from django import template
from django.utils.text import Truncator

register = template.Library()

@register.filter("custom_truncator")
def custom_truncator(value, max_len, trunc_chars=True):
    truncator = Truncator(value)
    return truncator.chars(max_len) if trunc_chars else truncator.words(max_len)



1

고마워.하지만 이건 내가 필요한 게 아니야.
grigy 2011 년

어떻게? 문자열을 분할하는 데 사용할 수 있습니다.
Ignacio Vazquez-Abrams 2011 년

문서에 목록 용이라고 나와 있습니다. 또한 잘린 텍스트에 "..."를 추가하지 않습니다.
grigy 2011 년

1
"..."는 잘린 경우에만 추가해야합니다.
grigy 2011 년

2
이것은 OP의 질문에 대한 답변이며 이전 버전의 Django에서 작동합니다. truncatechars더 명시 적이기 때문에 최신 버전 을 선호해야 하지만 .
rectangletangle

1

비슷한 코드로 목표를 달성 할 수 있습니다.

{{ value_of_text|truncatechars:NUM_OF_CHARS_TO_TRUNCATE}}

NUM_OF_CHARS_TO_TRUNCATE남길 문자 수는 어디에 있습니까 ?


0

"잘라 내기"필터를 추가하는 것은 4 년 동안 기능 요청 이었지만 마침내 내가 이해하는 한 트렁크에 도착했습니다. https://code.djangoproject.com/ticket/5025- 따라서 다음 릴리스를 기다리거나 사용해야합니다. 트렁크.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.