from django import forms
from django.core.exceptions import ValidationError
class RegForm(forms.ModelForm):
password = forms.CharField(error_messages={'required': '这是必选项'},
widget=forms.PasswordInput(attrs={'placeholder': '密码', 'type': 'password'}), label='密码',
min_length=6)
re_pwd = forms.CharField(widget=forms.PasswordInput(attrs={'placeholder': '确认密码', 'type': 'password'}),
label='确认密码', min_length=6)
class Meta:
model = models.User
fields = "__all__" # 所有字段
exclude = ['last_time'] # 排除这个字段
# labels={
# 'username':'用户名'
# }
widgets = {
'username': forms.TextInput(attrs={'placeholder': '用户名'}),
'position': forms.TextInput(attrs={'placeholder': '职位'}),
# 'company': forms.TextInput(attrs={'placeholder':'公司'}),
'phone': forms.TextInput(attrs={'placeholder': '手机'}), # 显示提示信息
}
error_messages = {
'username': {
'required': '必填项',
},
'password': {
'required': '必填项',
},
}
def clean_phone(self):
import re
phone = self.cleaned_data.get('phone')
if re.match(r'^1[3-9]\d{9}$', phone):
return phone
raise ValidationError('手机号格式不准确')
def clean(self):
self._validate_unique = True # 数据库校验唯一
password = self.cleaned_data.get('password', '')
re_pwd = self.cleaned_data.get('re_pwd')
if password == re_pwd:
md5 = hashlib.md5()
md5.update(password.encode('utf-8'))
print(md5.hexdigest())
self.cleaned_data['password'] = md5.hexdigest()
return self.cleaned_data
self.add_error('re_pwd', '两次密码不一致!!')
raise ValidationError('两次密码不一致')
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 自定义的操作
field = self.fields['company']
# print(field)
# print(field.choices)
choices = field.choices
choices[0] = ('', '选择公司')
field.choices = choices
def register(request):
form_obj = RegForm() # 实例化对象
if request.method == 'POST':
form_obj = RegForm(request.POST)
if form_obj.is_valid():
# 注册成功
form_obj.save()
# print(request.POST)
# print(form_obj.cleaned_data)
# form_obj.cleaned_data.pop('re_pwd')
# print(form_obj.cleaned_data)
# models.User.objects.create(**form_obj.cleaned_data)
return redirect('login')
return render(request, 'register.html', {'form_obj': form_obj})