我有一个动态formset(使用crispy表单)来设置对象的价格。我需要向用户显示这些对象的名称,以便他们知道他们为哪个对象设置了价格。但是,这些名称由用户自己以不同的形式选择。使用HTML类(布局内部)似乎最明显,但这是用于呈现Django模板。让用户添加模板代码会导致安全问题。
我想到的一个解决方案是首先手动“转义”它,例如将其包装在{% verbatim XXXXXX %}
标记中,XXXXXX
使用一些安全随机的字符串,或者用HTML字符代码替换任何花括号。但这两种解决方案看起来都非常容易出错,容易出错,从而导致出现安全问题。
是否有更简洁的方法将纯HTML插入到清晰的表单布局中?
答案 0 :(得分:1)
构建自己的脆弱布局对象非常容易,它们只需要一个渲染函数来返回要插入到表单中的字符串。您可以编写自己的HTML类版本,如下所示:
class SafeHTML:
def __init__(self, html):
self.html = html
def render(self, *args, **kwargs):
return str(self.html)