创建一个表单

一、创建一个表单

  • 1、前端表单的介绍(用户登录)

    <form action="" method="post" autocomplete="off">
        <div class="form-group marb20 ">
            <label>用&nbsp;户&nbsp;名</label>
            <input name="username" id="account_l" type="text" placeholder="手机号/邮箱"/>
        </div>
        <div class="form-group marb8 ">
            <label>密&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;码</label>
            <input name="password" id="password_l" type="password" placeholder="请输入您的密码"/>
        </div>
        <div class="error btns login-form-tips" id="jsLoginTips"></div>
        <div class="auto-box marb38">
            <a class="fr" href="forgetpwd.html">忘记密码?</a>
        </div>
        <input class="btn btn-green" id="jsLoginBtn" type="submit" value="立即登录 > "/>
    </form>
    

二、使用Form

  • 1、在App包里面创建一个forms.py的文件(一般是这样做的)
  • 2、定义规则

    from django import forms
    
    class LoginForm(forms.Form):
        username = forms.CharField(required=True, error_messages={'required': '用户名不能为空'})
        password = forms.CharField(required=True, min_length=5, error_messages={'required': '密码不能为空', 'min_length': '密码长度不能小于5个字符'})
    
  • 3、在视图类中使用forms中定义的规则

    class LoginView(View):
        """
        用户登录的视图
        """
    
        def get(self, request, *args, **kwargs):
            return render(request, 'login.html', kwargs)
    
        def post(self, request, *args, **kwargs):
            # 使用定义的forms中定义的规则,传递的是一个字典
            login_form = forms.LoginForm(request.POST)
            # 使用forms实例对象.is_valid()验证提交的数据是否符合规范
            if login_form.is_valid():
                # 使用forms校验成功后的,数据字段存放到cleaned_data()中
                # 这个地方也可以继续使用request.POST.get()获取字段值
                username = login_form.cleaned_data.get('username', None)
                password = login_form.cleaned_data.get('password', None)
                user = authenticate(username=username, password=password)
                if user is not None:
                    login(request, user)
                    return redirect('home')
                return self.get(request, message='用户名或者密码错误')
            # 获取错误返回
            return self.get(request, message=login_form.errors)
    
  • 4、几个字段

    • 1.使用forms类的实例.is_valid()判断是否为真
    • 2.校验成功后forms类的实例.cleaned_data.get()可以获取提交的数据
    • 3.使用forms类的实例.errors获取校验失败的错误,是一个字典

results matching ""

    No results matching ""