form组件的主要功能如下:
1.生成页面可用的HTML标签
2.对用户提交的数据进行校验
3.保留上次输入内容
使用form组建就能完成1.生成HTML代码2.数据有效性校验3校验信息返回并展示
1. from django import forms
2, 定义一个form类
class RegForm(forms.Form):
user = forms.CharField()
pwd = forms.CharField()
email = forms.EmailField()
生成HTML:
3. 实例化一个form对象, 传递到html模板中
4. 在模板中调用form对象的响应方法和属性
方式:
1. {{ obj.as_p }}
2. 单独写
{{ obj.pwd.label }}
{{ obj.pwd }}
做校验:
1. obj = RegForm(request.POST)
2. obj.is_valid()
#创建Form类时,主要涉及到 【字段】 和 【插件】,字段用于对用户#请求数据的验证,插件用于自动生成HTML;
class LoginForm(forms.Form):
username = forms.CharField(
min_length=8,
label="用户名",
initial="张三" # 设置默认值
error_messages={
"required": "该字段不能为空",
"min_length": "用户名不能少于6位",
},
widget=forms.widgets.TextInput(attrs={"class": "use"})
)
pwd = forms.CharField(min_length=6, label="密码") #密码显示明文
pwd = forms.CharField(min_length=6,label="密码",
widget=forms.widgets.PasswordInput(attrs={'class': 'c1'}, render_value=True)
)
'''
1.required=Ture 是否可以为空
2.label 输入框前面的内容,对输入框的描述
3.initial 输入框中的默认值
4.error_messages 定义错误信息,由于可定义多个,在html页面调用时使用errors,常用form_obj.username.errors.0取索引
5.widgte HTML插件要使用forms.widgets模块,其中attrs的值为字典,定义一个属性,便于设置样式
6.forms.widgets.PasswordInput将密码显示为密文。render_value=True保存原来填写的密码
7.help_text='帮助信息', #帮助信息(在标签旁边显示)
8.disabled = False, # 是否可以编辑
'''
def login(request):
if request.method == 'GET':
obj = LoginForm()
return render(request, "login.html", {"obj":obj})
else:
# username = request.POST.get('username')
# pwd = request.POST.get('pwd')
obj = LoginForm(request.POST) ## {"username":'xx', 'pwd':'xx'}
if obj.is_valid():
print(obj.cleaned_data) ## 对象
else:
print(obj.errors) ### 对象 __str__
return render(request, "login.html", {'obj':obj})
'''
在获取登录信息校验时:
obj.is_valid() 是True表示所有字段都通过校验
obj.cleaned_data:是一个字典,所有通过校验的数据放在里面
obj.errors:是一个字典,所有的错误字段的信息
'''