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

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

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



답변

이것은 최근 Django 1.4에 추가되었습니다. 예 :

{{ value|truncatechars:9 }}

여기에서 문서 참조


답변

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

최신 정보

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

{{ value|truncatechars:9 }}


답변

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

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


답변

사용자 정의 템플릿 태그를 생성하려면 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)


답변

여기 Django 문서, 내장 템플릿 태그 및 필터에 있습니다 : truncatechars


답변

사용자 지정 템플릿 필터를 작성해야합니다. http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-filters

어떻게 truncatewords내장되어 있는지 살펴보십시오 .django.utils.text


답변