django:从仅限网络服务的应用中删除“ blank = True”是否安全?

时间:2018-11-08 10:37:56

标签: python django

我正在使用现有数据库启动项目。从inspectdb生成的模型具有

(...null=True, blank=True)

在各个领域。该文档提到blank参数与Django表单有关。我正在使用 django rest框架和django ORM创建一个Web服务项目。绝对没有MVC的 view 组件(自动生成的表单,html模板等)。

这是否意味着从模型中删除blank=True是安全的?

3 个答案:

答案 0 :(得分:2)

如果没有blank=True,则尝试使用空白字段序列化数据时,您的应用程序将无法通过验证。 Django rest框架ModelSerializer强制执行模型字段上的任何类型的验证。它的工作方式与Django ModelForms类似。

如果您不使用ModelSerializers,并尝试在没有blank=True的字段上保存空白值,则save方法将引发异常。

TL; DR:如果删除blank=True,则DRF序列化程序将无法通过空白字段进行验证。

看看this有关验证在DRF中如何工作的问题。

希望这会有所帮助!

答案 1 :(得分:1)

可能不是。

无论您提供什么服务,您都可能希望验证数据。 Django的验证依赖于blank=True。它不仅适用于表单和模板。来自documentation

  

blank与验证相关。

答案 2 :(得分:1)

Django Rest Framework将在序列化程序验证中的模型字段上使用blank属性。当blankFalse(默认值)时,如果未在POST请求中为此字段设置值,则ModelSerializer将引发ValidationError。

基本上,如果您从某个字段中删除blank=True并尝试创建对该字段没有任何值的记录,则服务器会收到400条响应。

一切都不会中断,仅此请求将无法创建资源。在我的书中,我会称其为保险箱。这实际上取决于您是否需要该字段。但是由于您拥有null=True,因此拥有blank=True似乎是合理的。