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')

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

  • 相关阅读:
    【CYH-02】noip2018数论模拟赛:赛后题解
    C语言 malloc函数
    C 库函数
    C语言strcmp()函数:比较两个字符串
    C语言sprintf函数的深入理解
    C语言strcat()函数:字符串连接(拼接)
    liunx 中设置zookeeper 自启动(service zookeeper does not support chkconfig)
    页面上出现403错误,并解决
    Mac 下安装nginx
    nginx: [emerg] unknown directive "," in /usr/local/etc/nginx/nginx.conf:80
  • 原文地址:https://www.cnblogs.com/reaptem/p/7287172.html
Copyright © 2011-2022 走看看