gpt4 book ai didi

html - 我如何在 django 中将自定义字段设置为 "clean"html 字段?

转载 作者:行者123 更新时间:2023-12-04 17:33:49 24 4
gpt4 key购买 nike

我有一个带有描述字段的模型,该字段可以是 html 代码,出于安全原因,我想创建一个自定义字段以在保存到数据库之前清除此代码。

我正在尝试使用 lib bleach https://github.com/mozilla/bleach , 但我不知道我这样做对不对

这是我的自定义字段

class HtmlField(models.TextField):
description = 'Clean HTML field'

def __init__(self, *args, **kwargs):
bleach.clean(self.description)
super().__init__(*args, **kwargs)

编辑:

我可以按我想要的方式保存数据,但我重新考虑这个错误不迁移:TypeError:参数不能是'NoneType'类型,必须是文本类型

EDIT2:我通过检查文本是否为空解决了之前的问题:

if not value:
return ''

https://github.com/mozilla/bleach/issues/334

最佳答案

您可以覆盖 to_python 函数,例如:

class HtmlField(models.TextField):
description = 'Clean HTML field'

def <b>to_python</b>(self, value):
value = super().to_python(value)
if value is None:
return None
return bleach.clean(value)

话虽这么说,但我不认为将 HTML 代码存储在数据库中会带来安全风险。数据库不呈现 html,不运行 JavaScript 部分等。参见 the question "Database for Content - OK to store HTML?"获取更多信息。

关于html - 我如何在 django 中将自定义字段设置为 "clean"html 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57496629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com