如何在django中将自定义字段设置为;“干净”;html字段?
我有一个带有描述字段的模型,该字段可以是html代码,出于安全原因,我想创建一个自定义字段,在保存到db之前清除该代码 我试着用lib漂白剂,但我不知道我做得对不对 这是我的海关如何在django中将自定义字段设置为;“干净”;html字段?,html,django-rest-framework,sanitization,Html,Django Rest Framework,Sanitization,我有一个带有描述字段的模型,该字段可以是html代码,出于安全原因,我想创建一个自定义字段,在保存到db之前清除该代码 我试着用lib漂白剂,但我不知道我做得对不对 这是我的海关 类HtmlField(models.TextField): description='Clean HTML字段' 定义初始化(self,*args,**kwargs): 漂白。清洁(自我描述) super() 编辑: 我可以按我想要的方式保存数据,但是我没有迁移这个错误:TypeError:参数不能是'NoneTyp
类HtmlField(models.TextField):
description='Clean HTML字段'
定义初始化(self,*args,**kwargs):
漂白。清洁(自我描述)
super()
编辑:
我可以按我想要的方式保存数据,但是我没有迁移这个错误:TypeError:参数不能是'NoneType'类型,必须是文本类型
EDIT2:我通过检查文本是否为空解决了前面的问题:
如果不是值:
返回“”
您可以覆盖
to_python
函数,如:
class HtmlField(models.TextField):
description = 'Clean HTML field'
def to_python(self, value):
value = super().to_python(value)
if value is None:
return None
return bleach.clean(value)
类HtmlField(models.TextField):
description='Clean HTML字段'
定义到python(自身,值):
value=super()。到_python(value)
如果值为“无”:
一无所获
返回漂白剂。清洁(值)
尽管如此,我并不认为在数据库中存储HTML代码是一种安全风险。数据库不呈现html,也不运行JavaScript部分,等等。有关更多信息,请参阅。谢谢,我会对此进行测试,我也这么认为,但这是一个项目的紧急情况。这对我来说很有效,谢谢兄弟,还有一个给打算使用它的人的提示:@GustavoNogueira:如果你想自动“清洗”它,你需要覆盖
from\u db\u value
函数:我不理解你的最后一个comment@GustavoNogueira:您能否编辑您的问题并共享完整的回溯?