今までこのように買いていた。
@register.simple_tag def calc_rate(star): """ 星を計算する(評価者一覧の方) :param star: 星の数の数字 """ html = """ <p> """ star = '<span class="glyphicon glyphicon-star"></span>' * star html += star html += """ </p> """ return html
しかし、いざtemplateで
<div class="ratings"> {% calc_rate item.star %} </div>
のように使用するときにHTMLのタグ自体がそのまま表示されてしまう。
https://docs.djangoproject.com/en/1.11/howto/custom-template-tags/
おそらくエスケープを勝手にされていた?ので。
from django.utils.safestring import mark_safe
をインポートし、
最後のreturn
にて
return mark_safe(html)
したら大丈夫になった。