Django没有正确呈现HTML标签

时间:2014-11-29 09:27:20

标签: python html django django-templates

我在forms.py中有一条错误消息将其传递给模板,但模板呈现为字符串而不是html标记。

forms.py

    message = ("The email address is already taken. Please <a href='#'> log in. </a>"

    def clean_email(self):
        email = self.cleaned_data['email']
        try:
            User.objects.get_by_natural_key(email)
        except User.DoesNotExist:
              return email
        raise forms.ValidationError(message)

在模板中

    <span class="error">{{form.email.errors|safe}}</span>

但是这样做呈现为&#39;电子邮件地址已被采用。请<a href='#'>登录。</a>&#39;不是&#39; 电子邮件地址已被删除。请登录。&#39;

我尝试了autoescape代码{% autoescape off%}{{form.email.errors|safe}}{% endautoescape%},但这也不起作用。

我错过了什么?提前谢谢。

1 个答案:

答案 0 :(得分:3)

你应该尝试:

raise forms.ValidationError(mark_safe(message))

有关详细信息,请参阅mark_safe文档https://docs.djangoproject.com/en/1.7/ref/utils/#django.utils.safestring.mark_safe