十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!
最近写的资源策略管理,在ceilometer 中创建alarm时,name要求是不能重复的,所以在创建policy的时候,要对policy的name字段进行验证,而django中正好拥有强大的表单数据验证的功能。
#这是policy中的name字段,在表单的数据进行提交的时候,所有的数据流会经过clean()这个函数
name = forms.CharField(max_length=255, label=_("Name"))
#在clean函数中先取出表单中的name字段,在从数据库里面拿到所有的数据进行检查 def clean(self): cleaned_data = super(CreatePolicyForm, self).clean() name = cleaned_data.get('name') try: policys = api.nova.policy_list(self.request) except: exceptions.handle(request, _('Unable to retrieve policys list.')) if policys is not None and name is not None: for policy in policys: if policy.name.lower() == name.lower(): raise forms.ValidationError( _('The name "%s" is already used by another policy.') % name ) return cleaned_data