21👍
I suggest you use the truncatewords template filter.
Template example:
<ul>
{% for blogpost in blogposts %}
<li><b>{{blogpost.title}}</b>: {{blogpost.content|truncatewords:10}}</li>
{% endfor %}
</ul>
If the blog content is stored as HTML, use truncatewords_html
to ensure that open tags are closed after the truncation point (or combine with striptags
to remove html tags).
If you want to truncate on characters (not words), you can use slice
:
{{blogpost.content|slice:":10"}}
(outputs first 10 characters).
If content is stored as HTML, combine with striptags
to avoid open tags problems: {{blogpost.content|striptags|slice:":10"}}
2👍
In Django 1.4 and later, there’s a truncatechars filter that will truncate a string to a specific length and terminate it with ...
. It actually truncates it to the specific length minus 3, and the last 3 characters become the ...
.
1👍
Somewhat related..
I just provided an answer to this question: Django strip_tags template filter add space that may help others when making excerpts that contain HTML tags and short content in <p> tags.
Helps convert this..
"<p>This is a paragraph.</p><p>This is another paragraph.</p>"
to this..
'This is a paragraph. This is another paragraph.'
instead of this..
'This is a paragraph.This is another paragraph.'
- Can you use Python for both front end and back end using Django framework?
- Iterating over a Django QuerySet while deleting objects in the same QuerySet
- How to cache a model method in django?