六十一、Django之form组件

一、form组件

1、校验数据

# 第一步需要一个form类
                from django import forms

                class MyForm(forms.Form):
                    name = forms.CharField(max_length=6)
                    password = forms.CharField(max_length=8,min_length=3)
                    email = forms.EmailField(required=True)
#第二步实例化form对象
    form_obj = MyForm({‘name‘:‘jason‘})

# 第三步查看数据校验是否合法
    form_obj.is_valid()  # 只有当所有的字段都校验通过才会返回True

# 第四步查看校验错误的信息
    form_obj.errors  # 这个里面放的是所有校验未通过的字段及错误提示

{‘name‘: [‘Ensure this value has at most 6 characters (it has 7).‘],
‘password‘: [‘Ensure this value has at least 3 characters (it has 2).‘], ‘email‘: [‘Enter a valid email address.‘]}

# 第五步查看校验通过的数据
    form_obj.cleaned_data  # 符合校验规则数据都会被放到该对象中

# form组件校验数据的规则从上往下依次取值校验
    校验通过的放到cleaned_data
    校验失败的放到errors
# 注意:
    form中所有的字段默认都是必须传值的(required=True)
    校验数据的时候可以都传(多传的数据不会做任何的校验,不会影响form校验规则)
        

2、渲染标签

from django import forms

class MyForm(forms.Form):
    username = forms.CharField(max_length=6, label=‘用户名‘)
    password = forms.CharField(max_length=8, min_length=3)
    email = forms.EmailField()

def reg(request):
    # 生成一个空对象
    form_obj = MyForm()
    return render(request, ‘reg.html‘, locals())

views.py

reg.html:

<h1>第一种渲染标签的方式</h1>
{{ form_obj.as_p }}
{{ form_obj.as_ul }}

<h1>第二种渲染标签的方式</h1>
<form action="">
    <p>{{ form_obj.username.label }}{{ form_obj.username }}</p>
    <p>{{ form_obj.password.label }}{{ form_obj.password }}</p>
    <p>{{ form_obj.email.label }}{{ form_obj.email }}</p>
    <input type="submit">
</form>

<h1>第三种渲染标签的方式</h1>
<form action="" method="post">
    {% for foo in form_obj %}
    <p>{{ foo.label }}{{ foo }}</p>
    {% endfor %}
    <input type="submit">
</form>

3、展示数据

①前端取消校验

②展示数据输入是否合法

from django import forms

class MyForm(forms.Form):
    username = forms.CharField(max_length=6, label=‘用户名‘, error_messages={
        ‘max_length‘: ‘用户名最长为6位‘,
        ‘required‘: ‘用户名不能为空‘
    })
    password = forms.CharField(max_length=8, min_length=3, error_messages={
        ‘max_length‘: ‘密码最长为8位‘,
        ‘required‘: ‘密码不能为空‘,
        ‘min_length‘: ‘密码最少3位‘
    })
    email = forms.EmailField(error_messages={
        ‘required‘: ‘邮箱不能为空‘,
        ‘invalid‘: ‘邮箱格式不正确‘
    })

def reg(request):
    # 生成一个空对象
    form_obj = MyForm()
    if request.method == ‘POST‘:
        print(request.POST)
        form_obj = MyForm(request.POST)
        if form_obj.is_valid():
            print(form_obj.cleaned_data)
            models.User.objects.create(**form_obj.cleaned_data)
    return render(request, ‘reg.html‘, locals())

views.py

reg.html:

<h1>第三种渲染标签的方式</h1>
<form action="" method="post" novalidate>
    {% for foo in form_obj %}
        <p>
            {{ foo.label }}{{ foo }}
            <span>{{ foo.errors.0 }}</span>
        </p>
    {% endfor %}
    <input type="submit">
</form>

二、django操作cookie,session

原文地址:https://www.cnblogs.com/zhangguosheng1121/p/11041925.html

时间: 2024-11-05 15:54:51

六十一、Django之form组件的相关文章

Python之路【第二十一篇】:Django之Form组件

Django之Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 from django.forms import Form from django.forms import widgets from django.forms imp

【Django】Form组件

目录 Form组件介绍 常用字段与插件 Form组件中所有内置字段 从数据库中获取数据 校验示例 检验手机号是否合法 方式一(基本操作) 方式二(自定义验证规则) 方式三(利用钩子) 验证密码一致性 钩子 局部钩子 全局钩子 进阶 批量添加样式 ModelForm Form套Form @ *** Form组件介绍 在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,

django之form组件、cookie、session

django之form组件.cookie.session django form组件 1.渲染标签 2.校验数据 3.展示信息 校验数据 # 第一步需要一个form类 from django import forms class MyForm(forms.Form): name = forms.CharField(max_length=8) password = forms.CharField(max_length=8,min_length=3) email = forms.EmailField

Django 【第十一篇】Form组件基础

一.model常用操作 1.13个API查询:all,filter,get ,values,values_list,distinct,order_by ,reverse , exclude(排除),count,first,last,esits(判断是否存在) 需要掌握的all.values.values_list的区别 all:打印的是一个QuerySet集合,一个列表里面放的对象 values :是一个字典形式 values_list:是一个元组形式 all的性能是最低的 2.only和def

Django框架-Form组件

一.DjangoForm组件介绍 我们之前在html页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如验证用户是否输入,输入的长度和格式等是否正确,如果用户输入的内容有错误就需要在页面上相应的位置显示对应的错误信息. Django Form组件就实现了上面所述的功能. 1.生成页面可用的html标签(生成input框) 2.对用户提交的数据进行校验 3.错误信息的展示 4.保留上次的输入 缺

Django之Form组件

Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 from django.forms import Form from django.forms import widgets from django.forms import fields class MyForm(Form): user = fields.CharField( widget=widgets.Tex

[oldboy-django][2深入django]初始Form组件

http://www.cnblogs.com/wupeiqi/articles/6144178.html 1 初始Form组件 # Form验证(初始Form组件验证) - 问题: - 无法记住上次提交的内容,页面刷新数据消失 - 重复进行提交数据的校验(数据是否为空,长度大小等等) - 解决方法:django Form组件 - 定义规则(数据的格式,字段必须和表单上name属性一致) class LoginForm(Form): 实例化对象obj = LoginForm(request.POS

Django中Form组件拾遗(比较坑爹的地方+易忽略的点)

[001]Form组件之自动渲染一个ID选择器 在前面的章节中,我们使用了Django自带的Form组件帮我们完成对表单数据的校验,借助于Form组件,它帮我们自动渲染出input输入框,之前没怎么注意这块,最近才发现 它帮我们渲染出的input输入框自带了id选择器,来看如下的截图就明白了,这个地方坑了很久: <input class="form-control" id="id_email" name="email" placeholde

Python学习(三十九)—— Django之Form组件

一.构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的模板: <form action="/your-name/" method="post"> <label for="your_name">Your name: </label> <input id="your_name" type="text" name="your