2013-03-11 76 views
0

我有这样一段代码在我的模型文件:如何在模板中避免验证消息?

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. 而不是“XXX “在URL提供用户

我目前的解决方案是在模板中检查错误消息的输入值 - 如果它是唯一的错误我手动添加URL信息,但这种感觉不对。 ..
有没有人有这个干净的解决方案?

回答

0

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

字段的error_message应该足够普遍,可以显示在的任何地方您的应用程序可能会发生此类错误。您的消息特定于某种创建项目的形式,因此处理错误的最佳位置是验证该表单的相应字段。

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

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')}) 
+0

我已经尝试过mark_safe – matino 2013-04-03 07:09:01