Django autoescape все еще отображает HTML-теги для пользовательского фильтра

Я создал пользовательский фильтр, который в основном выглядит так

from django import template
from datetime import datetime
from django.contrib.humanize.templatetags.humanize import intcomma
from django.utils.safestring import mark_safe
register = template.Library()
def into_bs_badge(value):
    # <span class="badge badge-primary">Primary</span>
    # <span class="badge badge-secondary">Secondary</span>
    # <span class="badge badge-success">Success</span>
    # <span class="badge badge-danger">Danger</span>
    # <span class="badge badge-warning">Warning</span>
    # <span class="badge badge-info">Info</span>
    # <span class="badge badge-light">Light</span>
    # <span class="badge badge-dark">Dark</span>
    badge = '<span class="badge badge-primary">' + str(value)+ '</span>'
    return badge
    # return mark_safe(badge)
    
register.filter('into_bs_badge', into_bs_badge)

На моей странице есть

{% autoescape off %}
    {{ value.credits_count | into_bs_badge}}
{% endautoescape %}

Но я все еще получаю что-то вроде, вместо рендеринга фактического значка

<span class="badge badge-primary">28</span>

Я также пробовал

return mark_safe(badge)

Но когда я использую mark_safe, у меня ничего не отображается на странице, мне интересно, что я могу упустить

Наконец-то разобрались

from django import template
from django.utils.safestring import mark_safe
from django.utils.html import conditional_escape

register = template.Library()
@register.filter(needs_autoescape=True)
def into_bs_badge(value, autoescape=True):
    # <span class="badge badge-primary text-dark">Primary</span>
    # <span class="badge badge-secondary">Secondary</span>
    # <span class="badge badge-success">Success</span>
    # <span class="badge badge-danger">Danger</span>
    # <span class="badge badge-warning">Warning</span>
    # <span class="badge badge-info">Info</span>
    # <span class="badge badge-light">Light</span>
    # <span class="badge badge-dark">Dark</span>
    val = str(value)
    result = '<span class="badge bg-primary">%s</span>' % (val)
    return mark_safe(result) 
Вернуться на верх