102 votes

Balise de modèle Django pour tronquer le texte

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?

192voto

Banjer Points 2806

Ceci a récemment été ajouté à Django 1.4. par exemple:

 {{ value|truncatechars:9 }}
 

Voir la doc ici

65voto

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 }}
 

11voto

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
 

3voto

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

1voto

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X