码迷,mamicode.com
首页 > 其他好文 > 详细

Forms组件

时间:2019-07-22 20:06:25      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:sheet   返回   turn   key   conf   sub   code   com   ida   

后端代码

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>

 

Forms组件

标签:sheet   返回   turn   key   conf   sub   code   com   ida   

原文地址:https://www.cnblogs.com/huikejie/p/11227865.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!