python Django学习(17)——Form组件验证

参考博客:Django之ModelForm组件.感谢大神!!

一.Form组件

view.py:

from django.forms import Form
from django import forms
from django.forms import widgets        # widget是插件,可以用来定制样式
from django.forms import fields

class FM(Form):
    # 字段本身只做验证
    # 这里的字段名,必须跟html中的name一样,这样才能拿到数据
    user = fields.CharField(
        error_messages={'required':"用户名不能为空"},      # 定义错误信息
        # widget=widgets.Textarea(attrs={'class':'c1'}),   # 定义样式
        label='用户名',                                    # 定义label
        initial='root',                 # 默认值
    )
    pwd = fields.CharField(
        max_length=12,
        min_length=6,
        error_messages={'required': '密码不能为空.', 'min_length': '密码长度不能小于6', "max_length": '密码长度不能大于12'},
        widget=widgets.PasswordInput,        # 这里是设置成密码框,不加括号是因为不用自定义样式,要想自定义样式,还需要加括号
        label='密码',
    )
    email = fields.EmailField(
        error_messages={'required': "邮箱不能为空",'invalid':"邮箱格式错误"},
        label='邮箱',
    )

    f = fields.FileField()              # 就是input中的file

    city1 = fields.ChoiceField(         # 单选框
        choices=[(0, '上海'), (1, '广州'), (2, '东莞')]
    )
    city2 = fields.MultipleChoiceField(     # 多选框
        choices=[(0, '上海'), (1, '广州'), (2, '东莞')]
    )

def fm(request):
    if request.method == "GET":
        dic = {
            "user": 'r1',
            'pwd': '123123',
            'email': 'sdfsd',
            'city1': 2,
            'city2': [1, 2]
        }
        obj = FM(initial=dic)       # 设置默认初始值
        return render(request,'fm.html',{'obj':obj})
    elif request.method == "POST":
        # 获取用户所有数据
        # 每条数据请求验证
        # 成功:获取所有的正确的信息
        # 失败:显示错误信息
        obj = FM(request.POST)
        r1 = obj.is_valid()         # 拿着数据去做验证
        if r1:
            # r1为True,则验证成功
            print(obj.cleaned_data)
        else:
            print(obj.errors)
        return render(request,'fm.html',{'obj':obj})

fm.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="/app01/fm/" method="post">
        {% csrf_token %}
        <p>{{ obj.user.label }}{{ obj.user }}{{ obj.errors.user.0 }}</p>
        <p>{{ obj.pwd.label }}{{ obj.pwd }}{{ obj.errors.pwd.0 }}</p>
        <p>{{ obj.email.label }}{{ obj.email }}{{ obj.errors.email.0 }}</p>
        <p>{{ obj.f }}{{ obj.errors.f.0 }}</p>
        {{ obj.city1 }}
        {{ obj.city2 }}
        <p><input type="submit" value="提交"></p>
    </form>
</body>
</html>

    这样就能自动生成form表单了.
在这里插入图片描述
    当然,Form组件还有很多其他的功能,这里就只是简单记录一下学习的内容,后续会持续进行更新.

写在最后

    本文是个人的一些学习笔记,如有侵权,请及时联系我进行删除,谢谢大家.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值