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

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

  • 相关阅读:
    Big Data 應用:第二季(4~6月)台湾地区Game APP 变动分布趋势图
    大数据应用:五大地区喜新厌旧游戏APP类别之比较与分析
    Big Data應用:以"玩家意見"之數據分析來探討何謂"健康型線上遊戲"(上)
    Example:PanGu分詞系統-批次匯入新詞
    C#数据类型02--结构
    C#数据类型01--数组
    C#基础知识点
    陌生Layout属性
    LinearLayout(线性布局)
    Android--入门常识
  • 原文地址:https://www.cnblogs.com/reaptem/p/7287172.html
Copyright © 2011-2022 走看看