Django tem um truncatewords
template tag, que corta o texto na contagem de palavras dada. Mas não há nada como truncatechars .
Qual é a melhor maneira de cortar o texto no modelo no limite de comprimento de caracteres determinado?
django
django-templates
sujo
fonte
fonte
{{ value|slice:"5" }}{% if value|length > 5 %}...{% endif %}
Atualizar
Desde a versão 1.4, o Django tem uma tag de modelo integrada para isso:
fonte
truncatechars
filtro adiciona um caractere de elipse por padrão.Fiz meu próprio filtro de modelo, que adiciona "..." ao final da (última palavra) da string (truncada):
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
fonte
Se você preferir criar sua própria tag de template customizada, considere usar o Django util Truncator nela. A seguir está um exemplo de uso:
>>> 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 ...'
Em seguida, você pode colocá-lo em uma tag de modelo:
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)
fonte
Aqui está na documentação do Django, tags e filtros de template integrados: truncatechars
fonte
Você deve escrever um filtro de modelo personalizado: http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-filters
Dê uma olhada em como
truncatewords
está integradodjango.utils.text
fonte
slice
fonte
truncatechars
deva ser preferível, por ser mais explícito.Você pode atingir seu objetivo com um código semelhante:
{{ value_of_text|truncatechars:NUM_OF_CHARS_TO_TRUNCATE}}
onde
NUM_OF_CHARS_TO_TRUNCATE
é o número de caracteres para sair.fonte
Adicionar um filtro "truncado" foi uma solicitação de recurso por 4 anos, mas finalmente caiu no tronco, pelo que eu entendo https://code.djangoproject.com/ticket/5025 - então temos que esperar pelo próximo lançamento ou uso tronco.
fonte