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 %}
4 Réponses :
Vous pouvez écrire une balise de modèle personnalisée (voir Django Docs < / a>), ou vérifier manuellement le modèle, si le contenu que vous souhaitez afficher dépasse la longueur donnée via longueur code>
filtre intégré. p>
+1 pour la méthode simple de vérifier si l'affichage dépasse la longueur. Simple, et fonctionne bien.
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 %}
Check out http://code.djangoproject.com/ticket/6799 p>
Ce correctif fournit une méthode pour remplacer les élites par défaut pour le texte tronqué. P>
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, alors votre modèle lirait: p> read_more_neededed () code> peut-être, qui retourne vrai ou faux en fonction de la longueur du texte. par exemple:
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é.