43.django中form组件

form组件的主要功能如下:
1.生成页面可用的HTML标签
2.对用户提交的数据进行校验
3.保留上次输入内容
使用form组建就能完成1.生成HTML代码2.数据有效性校验3校验信息返回并展示

form组件的用法

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中常用的字段和插件

#创建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, # 是否可以编辑
'''

form校验

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:是一个字典,所有的错误字段的信息
'''
原文地址:https://www.cnblogs.com/yellowcloud/p/11383971.html