Login

Highlight matched search term

Author:
doniyor
Posted:
May 13, 2014
Language:
Python
Version:
1.4
Score:
0 (after 0 ratings)

sterm is the search term. text is the result search text.

it will highlight every matched search term in search result. please define your own .yellow css class.

use:

{{search_result_var|highlight:search_term}}

1
2
3
4
5
6
7
8
9
@register.filter(needs_autoescape=True)
def highlight(text, sterm, autoescape=None):
    if autoescape:
        esc = conditional_escape
    else:
        esc = lambda x: x
    pattern = re.compile('(%s)' % esc(sterm), re.IGNORECASE)
    result = pattern.sub(r'<strong class="yellow">\1</strong>',text)
    return mark_safe(result)

More like this

  1. Template tag - list punctuation for a list of items by shapiromatron 10 months, 2 weeks ago
  2. JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 10 months, 3 weeks ago
  3. Serializer factory with Django Rest Framework by julio 1 year, 5 months ago
  4. Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 6 months ago
  5. Help text hyperlinks by sa2812 1 year, 6 months ago

Comments

arthur (on May 14, 2014):

You should probably use str.replace(). If you want to use re you should escape input to the filter. If the search term is '.*' it will break, also see https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS

#

doniyor (on May 14, 2014):

thanks Arthur, very good point. i didnot consider this case.

#

Please login first before commenting.