【问题标题】:Put HTML into ValidationError in Django将 HTML 放入 Django 中的 ValidationError 中
【发布时间】:2013-09-13 12:53:49
【问题描述】:

我想在这个 ValidationError 中加入一个锚标记:

Customer.objects.get(email=value)
            if self.register:
                # this address is already registered
                raise forms.ValidationError(
                    _('An account already exists for this email address')
                )

锚标记是<a href="some/url/to/login">Log in instead</a>

因此,当用户输入已存在的电子邮件时,错误消息将类似于:

'此电子邮件地址已存在一个帐户。 <a>登录改为</a>?'

提前致谢!

【问题讨论】:

  • 有效吗? raise forms.ValidationError(_(mark_safe('An account already exists for this email address. <a>Log in instead</a>')))。看看mark_safe()
  • @goliney 我收到此错误:未定义全局名称“mark_safe”。
  • .py开头导入文件:from django.utils.safestring import mark_safe
  • @goliney 做到了!
  • 不幸的是,如果 ValidationError 的消息包含参数,则此方法不起作用。这是因为 Django 执行了message %= error.params (github.com/django/django/blob/…),它从结果字符串中删除了“安全”标志...

标签: python django


【解决方案1】:

这行得通:

Customer.objects.get(email=value)
    if self.register:
    # this address is already registered
    raise forms.ValidationError(
    (_(mark_safe('An account already exists for this email address. <a href="#" class="email_error">Log in instead?</a>')))
 )

...但在 Python 文件的顶部也需要这个:

from django.utils.safestring import mark_safe

【讨论】:

    猜你喜欢
    • 2016-03-04
    • 2018-02-14
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2019-11-11
    • 1970-01-01
    • 2014-04-23
    相关资源
    最近更新 更多