-1

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

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 没有转义,但没有任何效果(消息用“”包裹): 在此处输入图像描述
    来源:
    在此处输入图像描述

  2. 代替 URL 中的“xxx”,提供用户输入的值

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

4

2 回答 2

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')})
于 2013-04-02T18:18:45.813 回答
0

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

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

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

于 2013-03-11T11:46:40.617 回答