Django-form組件補充

Posted 江子川

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django-form組件補充相关的知识,希望对你有一定的参考价值。

自定义验证规则

方法一:

1
2
3
4
5
6
7
8
9
10
from django.forms import Form
 
from django.forms import widgets
from django.forms import fields
from django.core.validators import RegexValidator
   
class MyForm(Form):
    user = fields.CharField(
        validators=[RegexValidator(r‘^[0-9]+$‘‘请输入数字‘), RegexValidator(r‘^159[0-9]+$‘‘数字必须以159开头‘)],
    )

方法二

 
import re
from django.forms import Form
from django.forms import widgets
from django.forms import fields
from django.core.exceptions import ValidationError
  
  
# 自定义验证规则
def mobile_validate(value):
    mobile_re = re.compile(r‘^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$‘)
    if not mobile_re.match(value):
        raise ValidationError(‘手机号码格式错误‘)
  
  
class PublishForm(Form):
  
  
    title = fields.CharField(max_length=20,
                            min_length=5,
                            error_messages={‘required‘: ‘标题不能为空‘,
                                            ‘min_length‘: ‘标题最少为5个字符‘,
                                            ‘max_length‘: ‘标题最多为20个字符‘},
                            widget=widgets.TextInput(attrs={‘class‘: "form-control",
                                                          ‘placeholder‘: ‘标题5-20个字符‘}))
  
  
    # 使用自定义验证规则
    phone = fields.CharField(validators=[mobile_validate, ],
                            error_messages={‘required‘: ‘手机不能为空‘},
                            widget=widgets.TextInput(attrs={‘class‘: "form-control",
                                                          ‘placeholder‘: u‘手机号码‘}))
  
    email = fields.EmailField(required=False,
                            error_messages={‘required‘: u‘邮箱不能为空‘,‘invalid‘: u‘邮箱格式错误‘},
                            widget=widgets.TextInput(attrs={‘class‘: "form-control", ‘placeholder‘: u‘邮箱‘}))
 

方法三:

 
from django.forms import Form
from django.forms import fields
from django.forms import widgets
from app01 import models
from django.core.validators import RegexValidator
class UserInfoForm(Form):
    name=fields.CharField(
        required=True,
        min_length=6,
        max_length=12,
    )#用户提交是字符串
    email=fields.EmailField()#用户提交是字符串 正则
    phone=fields.CharField(
        #1.通过对象(支持正则表达式)
        # validators=[RegexValidator(r‘^[0-9]+$‘, ‘请输入数字‘), RegexValidator(r‘^159[0-9]+$‘, ‘数字必须以159开头‘)]
        #2.通过函数
        # validators=([mobile_validate,])
        #在当前类中 方法名称有要求
        # validators=([clean_phone])
    )#自定义验证规则 正则

def clean_phone(self):
# 去取用户提交的值:可能是错误的,可能是正确
value = self.cleaned_data[‘phone‘]
mobile_re = re.compile(r‘^(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$‘)
if not mobile_re.match(value):
raise ValidationError(‘手机号码格式错误‘)

if models.UserInfo.objects.filter(phone=value).count():
raise ValidationError(‘手机号码已经存在‘)
 
 

以上是关于Django-form組件補充的主要内容,如果未能解决你的问题,请参考以下文章

丸内の霊 補充4

Android開發高級組件

React系统学习3(組件三大核心属性之props)

Flutter-Offstage組件是否顯示

django-form组件

django-Form组件