【问题标题】:Add non-template HTML to crispy forms layout将非模板 HTML 添加到清晰的表单布局
【发布时间】:2018-01-08 14:20:34
【问题描述】:

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

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

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

【问题讨论】:

    标签: django django-crispy-forms


    【解决方案1】:

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

    class SafeHTML:
        def __init__(self, html):
            self.html = html
    
        def render(self, *args, **kwargs):
            return str(self.html)
    

    【讨论】:

      猜你喜欢
      • 2014-01-31
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 2017-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多