zoukankan      html  css  js  c++  java
  • Forms组件

    后端代码

    from django import forms
    from django.forms import widgets
    from django.core.validators import RegexValidator
    
    
    
    class MyForm(forms.Form):
        username = forms.CharField(min_length=3,
                                   
                                   label='用户名',
                                   max_length=8,
                                   #输入错误后的值
                                   error_messages={
            'required': '姓名不能为空',
            'min_length': '最小3位数',
            'max_length': '最大8位数', },
                                   widget=widgets.TextInput(attrs={'class': 'form-control'}))
        password = forms.CharField(min_length=3, label='密码', max_length=8, error_messages={
            'required': '密码不能为空',
            'min_length': '最小3位数',
            'max_length': '最大8位数', },
                                   widget=widgets.PasswordInput(attrs={'class': 'form-control'}))
    
        confirm_password = forms.CharField(min_length=3, label='确认密码', max_length=8, error_messages={
            'required': '确认密码不能为空',
            'min_length': '最小3位数',
            'max_length': '最大8位数', },
                                           widget=widgets.PasswordInput(attrs={'class': 'form-control'}))
    
        email = forms.EmailField(label='Email', error_messages={
            'required':'邮箱不能为空',
            'invalid': '格式错误'
        }, widget=widgets.EmailInput(attrs={'class': 'form-control'}))
    
    
        #RegexValidator验证器可以用正则匹配
        phone = forms.CharField(
            validators=[RegexValidator(r'^[0-9]+$', '请输入数字'), RegexValidator(r'^159[0-9]+$', '数字必须以159开头')], )
    
    
        #局部钩子当走完上面的form校验才会走这个局部钩子函数
        def clean_username(self):
            username = self.cleaned_data.get('username')
            if username == 'hkk':
                self.add_error('username', '姓名存在')
            return username
        #全局钩子
        def clean(self):
            password = self.cleaned_data.get('password')
            confirm_password = self.cleaned_data.get('confirm_password')
            if password != confirm_password:
                self.add_error('confirm_password', '密码不一致')
            return self.cleaned_data
    
    
    def index3(request):
        form_obj = MyForm()
        if request.method == 'POST':
            form_obj = MyForm(request.POST)
            #返回为布尔值如果校验成功返回True如果校验失败返回False
            if form_obj.is_valid():
    
                #校验成功的后返回的字典 key为字段values为用户输入后正确的值
                print(form_obj.cleaned_data)
            print(form_obj.errors)
        return render(request, 'text3.html', {'form_obj': form_obj})

    前端代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="/static/bootstrap-3.3.7-dist/css/bootstrap.min.css">
    </head>
    <body>
    <div class="row">
        <div class="col-md-6 col-lg-offset-3">
    
            <form action="" method="post" novalidate>
    
                    {% for foo in form_obj %}
                        <div class="form-group">
                        <label for="{{ foo.auto_id }}">{{ foo.label }}</label>
                        {{ foo }}
                        <span style="color: red">{{ foo.errors.0 }}</span>
                        </div>
                    {% endfor %}
                    <input type="submit" value="提交">
    
            </form>
    
        </div>
    </div>
    </body>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
    <script src="/static/bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>
    </html>
  • 相关阅读:
    koller——PGM 基础
    java 类 多态
    java 基础知识
    相关性检验和独立性检验
    IDEA远程连接Hadoop
    sklearn pipeline
    java static
    sklearn learn preprocessing
    数据预处理 简介
    RATE-MAX alpha冲刺第八天
  • 原文地址:https://www.cnblogs.com/huikejie/p/11227865.html
Copyright © 2011-2022 走看看