将非模板HTML添加到crispy表单布局中

时间:2017-08-01 15:57:43

标签: django django-crispy-forms

我有一个动态formset(使用crispy表单)来设置对象的价格。我需要向用户显示这些对象的名称,以便他们知道他们为哪个对象设置了价格。但是,这些名称由用户自己以不同的形式选择。使用HTML类(布局内部)似乎最明显,但这是用于呈现Django模板。让用户添加模板代码会导致安全问题。

我想到的一个解决方案是首先手动“转义”它,例如将其包装在{% verbatim XXXXXX %}标记中,XXXXXX使用一些安全随机的字符串,或者用HTML字符代码替换任何花括号。但这两种解决方案看起来都非常容易出错,容易出错,从而导致出现安全问题。

是否有更简洁的方法将纯HTML插入到清晰的表单布局中?

1 个答案:

答案 0 :(得分:1)

构建自己的脆弱布局对象非常容易,它们只需要一个渲染函数来返回要插入到表单中的字符串。您可以编写自己的HTML类版本,如下所示:

class SafeHTML:
    def __init__(self, html):
        self.html = html

    def render(self, *args, **kwargs):
        return str(self.html)
相关问题