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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_42567323/article/details/102599617

参考博客: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组件还有很多其他的功能,这里就只是简单记录一下学习的内容,后续会持续进行更新.

写在最后

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

猜你喜欢

转载自blog.csdn.net/weixin_42567323/article/details/102599617