Je suis nouveau sur Jinja2 et jusqu'à présent, j'ai pu faire la plupart de ce que je veux. Cependant, j'ai besoin d'utiliser des expressions régulières et je n'arrive pas à trouver quoi que ce soit dans la documentation ou sur Google.
Je voudrais créer une macro qui imite le comportement de ceci en Javascript:
function myFunc(str) {
return str.replace(/someregexhere/, '').replace(' ', '_');
}
qui supprimera les caractères d'une chaîne, puis remplacera les espaces par des traits de soulignement. Comment puis-je faire cela avec Jinja2?
Il existe un filtre déjà existant appelé replace
que vous pouvez utiliser si vous n'avez pas réellement besoin d'une expression régulière. Sinon, vous pouvez enregistrer un filtre personnalisé :
{# Replace method #}
{{my_str|replace("some text", "")|replace(" ", "_")}}
# Custom filter method
def regex_replace(s, find, replace):
"""A non-optimal implementation of a regex filter"""
return re.sub(find, replace, s)
jinja_environment.filters['regex_replace'] = regex_replace