如何逃避模板中的验证消息?

时间:2013-03-11 11:16:03

标签: django validation

我在模型文件中有这段代码:

sn = models.CharField(max_length=20, unique=True,
                          error_messages={'unique': 'This SN has already been created. <br/> Please <a href="/?sn=xxx">search it</a> instead'})

我想实现两件事:

  1. 将错误消息显示为HTML而不是文本。我尝试了mark_safesafe过滤器没有运气 - 尽管HTML没有转义,但它没有效果(消息用“”包裹): enter image description here
    来源:
    enter image description here

  2. 而不是URL中的“xxx”提供用户输入的值

  3. 我目前的解决方案是检查模板中的错误消息 - 如果是我手动添加URL信息的唯一错误,但这感觉不对... 有人为此提供了一个干净的解决方案吗?

2 个答案:

答案 0 :(得分:1)

未转发验证讯息:

from django.utils.html import mark_safe
sn = models.CharField(max_length=20, unique=True,
                      error_messages={'unique': mark_safe('This SN has already been created. <br/> Please <a href="/?sn=xxx">search it</a> instead')})

答案 1 :(得分:0)

在字段的error_messages属性中使用HTML不是一个好主意。

字段的error_message应该足够通用,以便在您的应用的任何地方中显示可能发生此类错误的内容。您的消息特定于某种创建项目表单,因此处理错误的最佳位置是在验证该表单的相应字段期间。

您可以在验证期间动态创建错误通知,因此插入值而不是占位符“xxx”会更自然(只是不要忘记对该值进行url编码,否则您的手上会出现安全漏洞)