万年素人からHackerへの道

万年素人がHackerになれるまで殴り書きするぜ。

  • ・資産運用おすすめ
    10万円は1000円くらい利益
    資産運用ブログ アセマネ
    • ・寄付お願いします
      YENTEN:YYzNPzdsZWqr5THWAdMrKDj7GT8ietDc2W
      BitZenny:ZfpUbVya8MWQkjjGJMjA7P9pPkqaLnwPWH
      c0ban:8KG95GXdEquNpPW8xJAJf7nn5kbimQ5wj1
      Skycoin:KMqcn7x8REwwzMHPi9fV9fbNwdofYAWKRo

    Django 1.11でのタグ使用時に勝手にエスケープされてしまう

    今までこのように買いていた。

    @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)
    

    したら大丈夫になった。