10
votes

Comment constater que le contenu est tronqué?

J'essaie de créer une application de blog et que le problème est quand j'utilise Tag 'truncatewords_html' dans mon modèle pour tronquer des messages plus longtemps que celui spécifié de mots, j'ai besoin de créer un lien vers Post complet par un titre comme "En savoir plus ... 'Après troncature. Donc, je devrais savoir que le post a été tronqué ou non.

P.s.: Est-ce une façon pythononique de résoudre le problème? p>

{% ifequal post.body|length post.body|truncatewords_html:max_words|length %}
  {{ post.body|safe }}
{% else %}
  {{ post.body|truncatewords_html:max_words|safe }}<a href="{{ post.url}}">read more</a>
{% endifequal %}


0 commentaires

4 Réponses :


2
votes

1 commentaires

+1 pour la méthode simple de vérifier si l'affichage dépasse la longueur. Simple, et fonctionne bien.



7
votes

Ceci est assez compliqué mais Django a des angles étranges. Fondamentalement, je figure si la longueur de la chaîne est la même si vous tronquez sur X et X + 1 mots, la chaîne n'a pas été tronquée ...

{% ifnotequal post.body|truncatewords_html:30|length post.body|truncatewords_html:31|length %}
   <a href="#">read more...</a>
{% endifnotequal %}


0 commentaires

0
votes

Check out http://code.djangoproject.com/ticket/6799

Ce correctif fournit une méthode pour remplacer les élites par défaut pour le texte tronqué.


0 commentaires

1
votes

Cela revient à la préférence personnelle, mais à mon goût, vous faites trop de travail dans le modèle. Je créerais une méthode sur le modèle postal, read_more_neededed () peut-être, qui retourne vrai ou faux en fonction de la longueur du texte. par exemple: xxx

alors votre modèle lirait: xxx


1 commentaires

Si vous allez ajouter «read_more_need ()» au modèle, vous devriez également faire la troncature dans le modèle. Le même code fait la troncature devrait déterminer si le contenu a été tronqué.