Dav*_* D. 7 python api django rest django-rest-framework
我知道这是一个广泛的问题.但是让我们假设您有一个Django项目,其中包含移动应用客户端使用的API.
您可以在许多地方添加验证逻辑:
save()方法在构建项目时,有哪些规则/元素可以帮助您选择是否应该在此处进行验证?
这是一个意见和风格问题.我认为模型验证是一个绝对的要求,是防止错误的最后一道防线.一旦模型验证到位,您就可以继续使用面向验证的表单,客户端和API.
特定的模型验证,字段或模型方法(或自定义管理器等)是样式的选择,适用于特定应用程序,但保持模型验证.这是一个可以捕捉到它的地方.您可能有许多表单,许多API,但有一点是数据进入数据库.
django的一个优点是在许多情况下模型验证传播,例如ModelForms.所以这也是一种方便,但这是一件好事:模型验证本质上是DB的最后一道门,应该得到妥善处理.
旁注:"字段"验证实际上是"数据库验证"和"django字段验证".
尽可能遵守DRY原则:
使用通用验证器的django方法.因此,即使您在多个地方进行验证,也可以使用相同的验证.如果此验证发生更改,则会随处更改,请参阅https://docs.djangoproject.com/en/1.9/ref/validators/
在可能的情况下,所有面向客户端的对象都应该提取模型验证,并使用它们,或者将它们映射到正确的客户端验证,类似于ModelForms.
如果可能,请使用模型验证错误消息为客户端创建有意义的反馈.
但验证可能会重复步骤,主要是因为验证具有(至少)两个角色:清理数据并向用户提供反馈.最好的例子是客户端验证.提供即时反馈非常有用,无需向服务器进行往返,但它会重复进行服务器端验证.模型验证只是确保当您添加更多表单,API,选项时,如果您忘记执行正确的验证 - 模型将阻止它.
| 归档时间: |
|
| 查看次数: |
648 次 |
| 最近记录: |