1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| from django import forms from app01 import models from django.forms import widgets from django.core.exceptions import ValidationError
class RegisterForm(forms.Form): name = forms.CharField(max_length=16, min_length=3, label='用户名', error_messages={'max_length': '最长位16', 'min_length': '最短为3'}, widget=widgets.TextInput(attrs={'class': 'form-control'})) password = forms.CharField(max_length=16, min_length=3, label='密码', error_messages={'required': '该字段必填'}, widget=widgets.PasswordInput(attrs={'class': 'form-control'})) re_password = forms.CharField(max_length=16, min_length=3, label='再次确认密码', error_messages={'required': '该字段必填'}, widget=widgets.PasswordInput(attrs={'class': 'form-control'})) email = forms.EmailField(label='邮箱', error_messages={'required': '该字段必填', 'invalid': '必须是邮箱格式'}, widget=widgets.TextInput(attrs={'class': 'form-control'}))
def clean_name(self): name = self.cleaned_data.get('name') if name.startswith('sb'): raise ValidationError('不能以sb开头') else: return name
def clean(self): password = self.cleaned_data.get('password') re_password = self.cleaned_data.get('re_password') if re_password == password: return self.cleaned_data else: raise ValidationError('两次密码不一致')
def register(request): if request.method == 'GET': register_form = RegisterForm() return render(request, 'register.html', locals()) else: register_form = RegisterForm(request.POST) if register_form.is_valid(): print('校验通过') print(register_form.cleaned_data) register_form.cleaned_data.pop('re_password') models.User.objects.create(**register_form.cleaned_data) return HttpResponse('ok') else: print('校验不通过') print(register_form.errors) error = register_form.errors.get('__all__')[0] return render(request, 'register.html', locals())
|