Django a une balise de modèle truncatewords , qui coupe le texte au nombre de mots donné. Mais rien ne ressemble à des truncatechars . Quelle est la meilleure façon de couper le texte dans le modèle à une longueur de caractère donnée?
Réponses
Trop de publicités?
caio
Points
841
{{ value|slice:"5" }}{% if value|length > 5 %}...{% endif %}
Mettre à jour
Depuis la version 1.4, Django a une balise de modèle intégrée pour cela:
{{ value|truncatechars:9 }}
jki
Points
1861
J'ai créé mon propre filtre de modèle, qui ajoute "..." à la fin du dernier mot de la chaîne (tronquée):
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
Abid A
Points
1502
Vous devriez écrire un filtre de modèle personnalisé: http://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-filters
Regardez comment truncatewords
est construit en django.utils.text
Ignacio Vazquez-Abrams
Points
312628