未验证Django数据库输入
我有这门课:未验证Django数据库输入,django,django-models,Django,Django Models,我有这门课: class Object(models.Model): value=models.IntegerFiled(validators=[MaxValueValidator(100)]) 我为value属性获取用户输入,根据用户输入创建一个对象,并将其保存到数据库中。问题在于,用户可以在表单中输入例如120,该表单用于获取从模板/html页面到视图方法的输入。然后将一个无效对象保存到数据库中。 MaxValueValidator究竟是如何工作的?它什么时候起作用?验证器的作用是
class Object(models.Model):
value=models.IntegerFiled(validators=[MaxValueValidator(100)])
我为value属性获取用户输入,根据用户输入创建一个对象,并将其保存到数据库中。问题在于,用户可以在表单中输入例如120,该表单用于获取从模板/html页面到视图方法的输入。然后将一个无效对象保存到数据库中。MaxValueValidator究竟是如何工作的?它什么时候起作用?验证器的作用是什么?(我在文档中确实找不到任何问题的答案) 我确实会检查输入表单在视图中是否有效,但这似乎并不能通过浏览器中的开发人员工具更改表单中的HTML属性来阻止保存无效对象 您可以制作一个表单,例如
class ObjectForm(forms.Form):
value = forms.IntegerField(validators=[MaxValueValidator(100)])
然后根据用户输入验证表单
if ObjectForm(request.POST).is_valid():
# save model object here
希望这对您有所帮助。如果希望验证程序自动运行,您应该使用从模型生成表单。根据:
请注意,保存模型时不会自动运行验证程序,但如果您使用的是ModelForm,它将在表单中包含的任何字段上运行验证程序