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

Add non-template HTML to crispy forms layout

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

我想到的一个解决方案是先手动"escaping"它,例如通过将它包装在 {% verbatim XXXXXX %} 标签中,使用 XXXXXX 一些安全的随机字符串,或者用它的 HTML 字符代码替换任何大括号。但这两种解决方案看起来都很老套,容易出错,因此会出现安全问题。

有没有一种更简洁的方法可以将纯 HTML 插入到清晰的表单布局中?

构建自己的脆皮布局对象真的很容易,它们只需要一个渲染函数,returns 将字符串插入到表单中。您可以像这样编写自己的 HTML class 版本:

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

    def render(self, *args, **kwargs):
        return str(self.html)