Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在django中将自定义字段设置为;“干净”;html字段?_Html_Django Rest Framework_Sanitization - Fatal编程技术网

如何在django中将自定义字段设置为;“干净”;html字段?

如何在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

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

我试着用lib漂白剂,但我不知道我做得对不对

这是我的海关

类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:您能否编辑您的问题并共享完整的回溯?