Django에는 truncatewords
주어진 단어 수에서 텍스트를 자르는 템플릿 태그 가 있습니다. 그러나 truncatechars 같은 것은 없습니다 .
주어진 문자 길이 제한에서 템플릿의 텍스트를 자르는 가장 좋은 방법은 무엇입니까?
답변:
{{ value|slice:"5" }}{% if value|length > 5 %}...{% endif %}
최신 정보
버전 1.4부터 Django에는이를위한 기본 제공 템플릿 태그 가 있습니다.
{{ value|truncatechars:9 }}
truncatechars
필터는 기본적으로 타원 문자를 추가합니다.
나는 (잘린) 문자열의 (마지막 단어) 끝에 "..."를 추가하는 자체 템플릿 필터를 만들었습니다.
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
truncatechars
더 명시 적이기 때문에 최신 버전 을 선호해야 하지만 .
"잘라 내기"필터를 추가하는 것은 4 년 동안 기능 요청 이었지만 마침내 내가 이해하는 한 트렁크에 도착했습니다. https://code.djangoproject.com/ticket/5025- 따라서 다음 릴리스를 기다리거나 사용해야합니다. 트렁크.