zoukankan      html  css  js  c++  java
  • Django表单字段的验证方式

    一、给表单的字段添加验证器

    In your forms.py

     1 def validate_name(value):
     2     try:
     3         # 查询存在的话抛出异常
     4         User.objects.get(username=value)
     5         raise ValueError("%s的用户已经存在"%value)
     6     except User.DoesNotExist:
     7         pass
     8 
     9 from blogapp.models import User
    10 class Loginfm(forms.ModelForm):
    11     # 与ModelForm中字段重名不会添加,这里用于给字段加验证器
    12     username=forms.CharField(validators=[validate_name])
    13     class Meta():
    14         model=User
    15         exclude=("id",'email')

    如果username已经存于数据库当中,提交时抛出已经存在的异常

    二、clean_fieldname

    针对某个字段进行验证

    In your forms.py

     1 from blogapp.models import User
     2 class Loginfm(forms.ModelForm):
     3     
     4     # clean_username为User类的一个方法
     5     # self代表表单自己
     6     def clean_username(self):
     7         value=self.cleaned_data.get("username")
     8         try:
     9             User.objects.get(username=value)
    10             raise ValueError("%s的用户信息已经存在"%value)
    11         except User.DoesNotExist:
    12             pass
    13         return value
    14 
    15     class Meta():
    16         model=User
    17         exclude=("id",'email')

    三、clean方法

    可用于对整个表单进行验证

    In forms.py

     1 from blogapp.models import User
     2 class Loginfm(forms.ModelForm):
     3     def clean(self):
     4         # 调用父类的方法
     5         # 获取表单所有的数据
     6         cleaned_data=super(Loginfm,self).clean()
     7         value=cleaned_data.get("username")
     8         try:
     9             User.objects.get(username=value)
    10             self._errors['username']=self.error_class(["%s已经存在"%value])
    11             
    12         except User.DoesNotExist:
    13             pass
    14         return cleaned_data
    15     class Meta():
    16         model=User
    17         exclude=("id",'email')

    可以适用注册(两次密码匹配)

  • 相关阅读:
    SelectorQuery wx.createSelectorQuery()
    JavaScript获取服务器端时间的方法
    linux ftp 文件修改时间 ModifiedDate 与本地相差 8小时
    申请域名SSL证书-域名验证配置指南
    Python之pygame,从入门到精通(一)
    Anaconda介绍、安装及使用教程
    Git安装及控制台美化
    Redis Desktop Manager的下载及安装
    redis 访问 database
    Redis消息队列
  • 原文地址:https://www.cnblogs.com/reaptem/p/7287172.html
Copyright © 2011-2022 走看看