Django数据库输入未经过验证

时间:2017-05-10 20:33:26

标签: django django-models

我有这堂课:

class Object(models.Model):
    value=models.IntegerFiled(validators=[MaxValueValidator(100)])

我获取value属性的用户输入,根据用户输入创建对象并将其保存到数据库。问题是用户可以输入例如120用于从模板/ html页面获取输入到视图方法的形式。然后将无效对象保存到数据库中 MaxValueValidator究竟是如何工作的?什么时候做什么?验证者的目的是什么?(我在文档中找不到任何答案)

我确实检查输入表单在视图中是否有效,但这似乎不会阻止通过浏览器中的开发人员工具更改表单中的HTML属性来保存无效对象

2 个答案:

答案 0 :(得分:2)

如果您希望自动运行验证程序,则应使用ModelForm从模型生成表单。根据{{​​3}}:

  

请注意,保存模型时不会自动运行验证程序,但如果您使用的是ModelForm,它将在表单中包含的任何字段上运行验证程序。

答案 1 :(得分:1)

ValidatorsForms

合作

您可以制作表单,例如

class ObjectForm(forms.Form):
    value = forms.IntegerField(validators=[MaxValueValidator(100)])

然后根据用户输入验证表单

if ObjectForm(request.POST).is_valid():
    # save model object here

希望这有帮助。