【问题标题】:Django not rendering html tags properlyDjango没有正确呈现html标签
【发布时间】:2015-01-27 19:51:54
【问题描述】:

我在 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>

但这会呈现为“电子邮件地址已被占用。请&lt;a href='#'&gt;login.&lt;/a&gt;'不是' 电子邮件地址已被占用。请登录。'

我尝试了自动转义标签{% autoescape off%}{{form.email.errors|safe}}{% endautoescape%},但这也不起作用。

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

【问题讨论】:

    标签: python html django django-templates


    【解决方案1】:

    你应该尝试:

    raise forms.ValidationError(mark_safe(message))
    

    查看mark_safe documentation了解更多信息

    为了构建 HTML 片段,您通常应该使用 django.utils.html.format_html() 代替

    【讨论】:

      猜你喜欢
      • 2012-02-15
      • 2012-03-05
      • 1970-01-01
      • 2011-06-20
      • 2015-08-22
      • 2019-02-09
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      相关资源
      最近更新 更多