我在模型文件中有这段代码:
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'})
我想实现两件事:
将错误消息显示为HTML而不是文本。我尝试了mark_safe
,safe
过滤器没有运气 - 尽管HTML没有转义,但它没有效果(消息用“”包裹):
来源:
而不是URL中的“xxx”提供用户输入的值
我目前的解决方案是检查模板中的错误消息 - 如果是我手动添加URL信息的唯一错误,但这感觉不对... 有人为此提供了一个干净的解决方案吗?
答案 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编码,否则您的手上会出现安全漏洞)