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