简体   繁体   中英

How to truncate html without breaking the tags?

How to ensure that all html-tags were closed? The problem arises because I want create some sort of excerpt for every article. For example someone writes an article like this:

Hi everyone, I'm just an article and I have few <strong>tags</strong> inside <em>of me</me>

If I cut this message just after "tags", I get an unclosed tag . How can I check with Django all user's input text before saving it to DB?

In Django 1.7, there is a specific template filter called truncatechars_html :

Similar to truncatechars, except that it is aware of HTML tags. Any tags that are opened in the string and not closed before the truncation point are closed immediately after the truncation.

Also see truncatewords_html .

For Django<1.7, you can either use truncatewords_html , or make a custom filter based on the one implemented in 1.7 ( source ), or use this snippet (have not tested it). Also see relevant to the snippet blog post: Safe truncation of HTML .

For Django 1.6 there is truncatewords_html available no need to create a custom filter. https://docs.djangoproject.com/en/1.6/ref/templates/builtins/#truncatewords-html

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM