zoukankan      html  css  js  c++  java
  • 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:是一个字典,所有的错误字段的信息
    '''
    
  • 相关阅读:
    nginx 怎么通过域名访问8080端口(指定端口)
    node.js 部署的 vue 项目怎么在局域网访问
    MySQL的疑难问题解决
    win10下装ubuntu双系统(免U盘)
    文件、块、对象存储
    OpenShift定义的安全上下文约束(SCCs)
    OpenShift资源类型
    yum命令详解
    OCP3.9的网络
    NTP时间服务器搭建部署
  • 原文地址:https://www.cnblogs.com/yellowcloud/p/11383971.html
Copyright © 2011-2022 走看看