Chinaunix首页 | 论坛 | 博客
  • 博客访问: 345743
  • 博文数量: 148
  • 博客积分: 2745
  • 博客等级: 少校
  • 技术积分: 1704
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-30 14:59
文章分类

全部博文(148)

文章存档

2013年(97)

2012年(7)

2011年(3)

2010年(41)

我的朋友

分类: Python/Ruby

2010-04-03 11:12:12

前面讲了这一块,对django的form有个大概的认识,这一节我主要讲下django form的验证处理

处理分为两部分:

1form自身处理

2views里的处理

form自身处理:

假如我们定义一个用户的表单

class Member(model.ModelFrom):

    def clean_username(self): 这个是对form里面的进行验证
"""验证帐号"""
....

   如果我们有个需求需要验证比如密码和重复密码是否相同的话。这样验证单个字段的方法就没有用了

用下面这个就可以解决了

def clean(self):

   这里就可以验证超过2个字段的数据

           password = self.cleaned_data.get('password', '').strip()
password1 = self.cleaned_data.get('password1','').strip()
if password and password1 and password != password1:
msg = u'两次密码输入不一致'
self._errors["password1"] = ErrorList([msg])
del self.cleaned_data["password1"]
return self.cleaned_data

哈哈,django的form神奇把

2view的处理:

    if 'POST' == request.method:
article = Domain.objects.filter(id=aid)[0]
form = DomainForm(request.POST,instance=article)#这个是把request请求的数据和forml绑定起来

if form.is_valid():#form验证处理
form.save()#如果验证通过的话。把form的数据添加到数据库里

如果我们在添加数据到数据库前需要处理一些数据,再入库的话,就可以用到下面一个方法了

   m = form.save(commit=False)

m.title = 'sss'

m.save()


return HttpResponseRedirect('')
else:
tmp['form'] = form#这里是数据没有通过验证的话

else:
article = Domain.objects.filter(id=aid)[0]
tmp['form'] = DomainForm(instance=article) 这个是把django的form和Model结合起来

阅读(849) | 评论(0) | 转发(0) |
0

上一篇:django form 第一节

下一篇:django form 第3节

给主人留下些什么吧!~~