zoukankan      html  css  js  c++  java
  • Django的form组件应用登陆或者注册

    from django import forms
    from django.forms import Form
    from django.forms import widgets
    from django.forms import fields
    from django.core.exceptions import ValidationError
    from blog.models import *
    
    
    class RegisterForm(Form):
        # 自定义form组件
        username = fields.CharField(
            label='用户名',
            widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': "请输入用户名"}),
            required=True,
            max_length=32,
            strip=True,
            error_messages={
                'required':'用户名不能为空',
                'max_length':'用户名最大长度为32',
            }
        )
        email = fields.EmailField(
            label='邮箱',
            widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': "请输入邮箱"}),
            required=True,
            error_messages={
                'required': '邮箱不能为空',
                'invalid': '邮箱格式错误',
            }
        )
        password = forms.RegexField(
            label='密码',
            # regex='^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#$\%^&*()])[0-9a-zA-Z!@#$\%^&*()]{8,32}$',
            # regex='^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,32}$',
            regex='^[0-9A-Za-z]{6,32}$',
            min_length=6,
            max_length=32,
            required=True,
            widget=widgets.PasswordInput(attrs={'class': 'form-control', 'placeholder': "请输入密码"}),
            error_messages={'required': '密码不能为空.',
                            'invalid': '密码必须包含数字,字母、特殊字符',
                            'min_length': '密码长度不能小于6个字符',
                            'max_length': '密码长度不能大于32个字符',
                            }
        )
        confirm_pwd = fields.CharField(
            label='确认密码',
            widget=widgets.PasswordInput(attrs={'class': 'form-control', 'placeholder': "请再次输入密码"}),
            required=True,
            min_length=6,
            max_length=32,
            error_messages={'required': '密码不能为空.',
                            'min_length': "密码长度不能小于6个字符",
                            'max_length': "密码长度不能大于32个字符"}
        )
        # check_code = fields.CharField(
        #     widget=widgets.TextInput(attrs={'class': 'form-control', 'placeholder': "请输入验证码"}),
        #     required=True,
        #     error_messages={'required': '验证码不能为空.', }
        # )
    
        def clean_username(self):
            v = self.cleaned_data.get('username')
            if UserInfo.objects.filter(username=v).count():
                raise ValidationError('用户名已存在')
            else:
                return v
    
        def clean_email(self):
            v = self.cleaned_data.get('email')
            if UserInfo.objects.filter(email=v).count():
                raise ValidationError('邮箱已存在')
            else:
                return v
    
        def clean(self):
            v1 = self.cleaned_data.get('password')
            v2 = self.cleaned_data.get('confirm_pwd')
            if v1 == v2:
                pass
            else:
                raise ValidationError('密码输入不一致')
  • 相关阅读:
    从 OKR 工作法到 OKRs-E,落地OKR不能错过的转变
    OKR : 不要让目标仅仅成为口号
    [MySQL]Software caused connection abort: recv failed 问题分析与解决
    VS2010 vcpkgsrv.exe进程CPU占用高的解决方法
    Lync Server 2013企业版部署系列之九:前端部署后续工作
    Lync Server 2013企业版部署系列之八:安装lync server系统
    Lync Server 2013企业版部署系列之七:使用拓扑生成器规划拓扑
    Lync Server 2013企业版部署系列之六:AD准备
    Lync Server 2013企业版部署系列之五:前端服务器软件准备
    Lync Server 2013企业版部署系列之四:SQL准备
  • 原文地址:https://www.cnblogs.com/Alone-Tree/p/9785796.html
Copyright © 2011-2022 走看看