ProgramingTip

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

bestdevel 2020. 10. 25. 12:44
반응형

텍스트를 자르는 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 문서, 내장 템플릿 태그 및 필터에 있습니다 : truncatechars


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

어떻게 truncatewords매장되어 있는지 확인 합니다.django.utils.text


고유 한 사용자 지정 템플릿 태그를 생성하려는 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)

slice


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

참고 URL : https://stackoverflow.com/questions/5235994/django-template-tag-to-truncate-text

반응형