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
- Browser-native date input field by kytta 1 month, 1 week ago
- Generate and render HTML Table by LLyaudet 1 month, 2 weeks ago
- My firs Snippets by GutemaG 1 month, 3 weeks ago
- FileField having auto upload_to path by junaidmgithub 2 months, 4 weeks ago
- LazyPrimaryKeyRelatedField by LLyaudet 3 months, 1 week ago
Comments
You should probably use
str.replace()
. If you want to usere
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#
thanks Arthur, very good point. i didnot consider this case.
#
Please login first before commenting.