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