Django tiene truncatewords etiqueta de plantilla, que corta el texto en la cuenta de la palabra dada. Pero no hay nada como truncatechars. ¿Cuál es la mejor manera de cortar el texto en la plantilla a un límite de longitud de caracteres dado?etiqueta de plantilla de Django para truncar el texto
Respuesta
debe escribir un filtro de plantilla personalizada: http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-filters
Tener un vistazo a cómo truncatewords
se construye en django.utils.text
{{ value|slice:"5" }}{% if value|length > 5 %}...{% endif %}
actualización
Desde la versión 1.4, Django tiene un built-in template tag para esto:
{{ value|truncatechars:9 }}
Dado que estoy trabajando con Django anterior a 1.4, esto es exactamente lo que necesitaba. ¡Gracias! –
Mejor aún, el uso de '& hellip;' en lugar de ... – mlissner
la [ 'truncatechars'] (https://docs.djangoproject.com/en/1.10/ref/templates/builtins/#truncatechars) filtro añade un carácter elipse por defecto. – cw1998
hice mi propio filtro de plantilla, que se suman "..." al final de la (última palabra de) la cadena (truncada), así:
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
Su predeterminado ahora es django. –
Adición un filtro "truncado" fue una solicitud de función durante 4 años, pero finalmente aterrizó en el tronco, por lo que entiendo https://code.djangoproject.com/ticket/5025 - así que tenemos que esperar a la próxima versión o usar el tronco.
Aquí está en la documentación de Django, Built-in template tags and filters: truncatechars
Si prefiere crear su propia etiqueta de plantilla personalizada, considere usar el Django util Truncator en ella. La siguiente es una muestra 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 ...'
A continuación, se puede poner en una etiqueta de plantilla:
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. Django - plantilla simple ejemplo etiqueta
- 2. url etiqueta de plantilla en la plantilla de Django
- 3. Django error 'url' etiqueta de plantilla
- 4. Django: ¿usar etiqueta de plantilla y 'con'?
- 5. Etiqueta de plantilla de Django para mostrar la versión de Django
- 6. Elección dinámica de la plantilla de etiqueta de inclusión Django
- 7. Etiqueta de inclusión de Django con plantilla configurable
- 8. Django: etiqueta de plantilla de inclusión personalizada MEDIA_URL?
- 9. Truncar texto en chino
- 10. ¿Truncar texto en PHP?
- 11. Django: Mejor práctica para URL conf, plantilla de plantilla url
- 12. Cómo quitar la etiqueta del widget de texto de Django
- 13. Configuración de Django para salida de etiqueta de plantilla predeterminada cuando la variable es Ninguna?
- 14. Plantilla de Django, si la etiqueta está basada en el valor de URL actual
- 15. Plantilla de Django para ciclo - Última iteración
- 16. Truncar texto con jQuery basado en el ancho de píxel
- 17. Captura de etiqueta de Django ModelForm
- 18. Limite el número de caracteres con el filtro Plantilla Django
- 19. Etiqueta 'con' condicional en Django
- 20. Django - Cómo pasar varios argumentos para la etiqueta de plantilla url
- 21. if..else personalizado plantilla etiqueta
- 22. Pasar el nombre de URL variable a la etiqueta url en la plantilla django
- 23. Obtener texto de etiqueta internacionalizado sin etiqueta envoltorio de etiqueta
- 24. Uso de Ember.js ids campo de texto para una etiqueta
- 25. Etiqueta de inclusión condicional en Django
- 26. Django: construir el valor de la etiqueta {% include%} dinámicamente?
- 27. Django urldecode en el archivo de plantilla
- 28. plantilla de Django - Incrementar el valor de una variable
- 29. ¿Tiene Django una etiqueta de plantilla que puede detectar URL y convertirlas en hipervínculos?
- 30. Django Autenticación de usuario truncar campo de correo electrónico
"truncatechars" está trabajando en el último Django 1.9 también –