二、自定义form组件

from django import forms
from django.forms import widgets
from app01 import models # 定制form组件
class MyForm(forms.Form):
username = forms.CharField(max_length=8, min_length=3, label='用户名', error_messages={
'max_length': '用户名长度超啦,不能超过8位!',
'min_length': '兄dei,你输的用户名也太短了,最起码3位吧!',
'required': '这么大的框,你至少输点东西吧!',
}, widget=widgets.TextInput(attrs={
'class': 'form-control',
})) password = forms.CharField(max_length=8, min_length=3, label='密码', error_messages={
'max_length': '密码长度超啦,不能超过8位!',
'min_length': '兄dei,你输的密码也太短了,最起码3位吧!',
'required': '密码这种东西,你至少输点东西吧!',
}, widget=widgets.PasswordInput(attrs={
'class': 'form-control',
})) confirm_password = forms.CharField(max_length=8, min_length=3, label='确认密码', error_messages={
'max_length': '确认密码长度超啦,不能超过8位!',
'min_length': '兄dei,你输的确认密码也太短了,最起码3位吧!',
'required': '密码这种东西,你至少输点东西吧!',
}, widget=widgets.PasswordInput(attrs={
'class': 'form-control',
})) email = forms.EmailField(label='邮箱', error_messages={
'required': '邮箱不能为空啊!',
'invalid': '邮箱的格式你竟然写错了!'
}, widget=widgets.EmailInput(attrs={
'class': 'form-control'
})) # 局部钩子 --> 校验用户名是否存在
def clean_username(self):
username = self.cleaned_data.get('username')
user_obj = models.UserInfo.objects.filter(username=username).first()
if user_obj:
self.add_error('username', '这个用户名已经存在了,换一个试试吧!')
return username # 全局钩子函数 --> 校验密码是否一致
def clean(self):
password = self.cleaned_data.get('password')
confirm_password = self.cleaned_data.get('password')
if not password == confirm_password:
self.add_error('confirm_password', '兄弟,手抖了吧,两次输入的密码不一样啊!')
return self.cleaned_data

BBS论坛  自定义form组件-LMLPHP

BBS论坛  自定义form组件-LMLPHP

05-14 13:44