`
luliangok
  • 浏览: 816854 次
文章分类
社区版块
存档分类
最新评论

Django实战(9):实现Product的输入校验

 
阅读更多

让我们完成上一节中的任务:

1.验证price>0:需要在Form中验证;
2. 验证title唯一:在Model中验证;
3. 验证image_url的扩展名:在Form中验证,还可以顺便在Model中将其改为URLField类型。

之前生成的scaffold中已经实现了属性不能为空的验证:

但是对于url格式,rul的后缀,title的唯一性都没有验证。首先在model中增加URL格式和title唯一性的校验:


在title上增加unique=True, 并将image_url的类型改为URLField,就完成了:

剩下的图片格式后缀、价格>0的校验需要在form中实现:

depot/depotapp/forms.py

ProductForm继承自ModelForm,可以根据model属性自动生成表单。

在生成的ProductForm上增加了clean_price和clean_image_url验证。结果如下:

那么,表单是如何展现的呢?看一下template:

depot/depotapp/templates/depotapp/create_product.html


直接输出form对象({{fom}} 就会将Form格式化成表单(默认使用table,也可以通过as_p,as_ul方法指定为<p>或<li>),并且包含了错误提示信息。

{% csrf_token %}的作用是增加token表单项,避免重复提交。





分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics