form表单
Django自带form表单,它有两个作用
1)用户请求验证
2)生成HTML标签
写一个注册页面
1)用户 密码不能空
2)符合规范 密码多少位 邮件带@ ...
3)自定义验证方法 密码和确认密码要一致
urls.py
url(r'^register$', views.register),
view.py
from django.forms import Form
from django.forms import fields
from django.forms import widgets
class RegisterForm(Form):
user = fields.CharField(
min_length= 4,
max_length= 8,
error_messages={'required':'用户名不能为空'},
widget = widgets.TextInput(attrs={'class': 'c1'})
)
passwd = fields.CharField(
min_length=4,
max_length=8,
error_messages={'required':'密码不能为空'},
widget = widgets.PasswordInput(attrs={'class': 'c1'})
)
passwd_c = fields.CharField(
min_length=4,
max_length=8,
error_messages={'required':'密码不能为空'},
widget = widgets.PasswordInput(attrs={'class': 'c1'})
)
#判断密码和确认密码是否一致
def clean(self):
try:
passwd = self.cleaned_data['passwd']
passwd_c = self.cleaned_data['passwd_c']
if passwd == passwd_c:
del self.cleaned_data['passwd_c']
return self.cleaned_data
else:
from django.core.exceptions import ValidationError
self.add_error('passwd_c',ValidationError('密码输入不一致'))
return self.cleaned_data
except KeyError as e:
return self.cleaned_data
def register(request):
if request.method == 'GET':
form = RegisterForm()
return render(request,'web/register.html',{'form':form})
else:
form = RegisterForm(request.POST)
if form.is_valid(): #is_valid是否返回规定
UserInof.objects.create(**form.cleaned_data)
return HttpResponse("注册成功")
else:
print(form.errors)
return render(request,'web/register.html',{'form':form})
register.html
<body>
<form method="post" novalidate>
{% csrf_token %}
<p>用户名:{{ form.user }}{{ form.errors.user.0 }}</p>
<p>密码:{{ form.passwd }}{{ form.errors.passwd.0 }}</p>
<p>确认密码:{{ form.passwd_c }}{{ form.errors.passwd_c.0 }}</p>
<input type="submit" value="提交">
</form>
</body>