首页 > 其他分享 >forms组件介绍

forms组件介绍

时间:2023-12-06 18:33:41浏览次数:38  
标签:form 校验 介绍 label forms print 组件 data

1 注册功能,登录功能,前端需要校验(字段长度,邮箱是否合法。。。)
2 前端校验可以没有,后端校验是必须的,使用传统方式 if判断写的很多
3 借助于forms组件,可以快速实现字段的校验
from django.forms import Form

 

注意:

 #form=myforms.MyForm(data)实例化得到对象
 # 校验数据:form.is_valid() 返回布尔类型
#form.cleaned_data) # 不一定是上面传入的数据,是通过校验的数据

forms校验字段功能

### 1 写一个类,类里写要校验的字段
class MyForm(forms.Form):
    # 校验这个字段,最大长度是32,最小长度是3
    name = forms.CharField(required=False, max_length=32, min_length=3,label='用户名')
    email = forms.EmailField(label='邮箱')
    age=forms.IntegerField(max_value=200,min_value=0,label='年龄')
    
    
### 2 视图函数中使用
def register(request):
    # 数据可以是从前端传过来的,也可以是自己后台的数据

    # 我现在有以下数据
    data={'name':'lqz','email':'[email protected]','age':900}
    # data={'email':'[email protected]','age':100}
    # data={'age':100}
    # 校验数据是否合法
    # 实例化得到form对象,把要校验的数据传入
    form=myforms.MyForm(data)
    # 校验数据:form.is_valid() 返回布尔类型

    if form.is_valid():
        print('校验通过')
        # 校验通过的数据
        print(form.cleaned_data)  # 不一定是上面传入的数据
    else:
        print(form.cleaned_data)
        print('校验失败')
        # 哪个字段失败了?失败的原因是什么
        print(form.errors)
        print(type(form.errors))
        from django.forms.utils import ErrorDict
        #### 重写了__str__
        print(form.errors.as_json())
        print(form.errors.as_data())

        # form.errors.as_ul()  # 是为了渲染模板


    return HttpResponse('ok')

 

 

forms渲染模板功能

## 视图函数
def register(request):
    if request.method=='GET':
        form=myforms.MyForm()
        return render(request,'register.html',{'form':form})
    elif request.method=='POST':
        # 数据校验
        form=myforms.MyForm(request.POST)
        if form.is_valid():
            print('校验通过,存数据库')
        else:
            print(form.errors.as_data())
            print('校验失败,返回错误')
        return HttpResponse('ok')
    
    
 ## 模板
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<hr>
<h1>手动创建模板</h1>
<form action="" method="post">
    <p>用户名:<input type="text" name="name"></p>
    <p>邮箱:<input type="text" name="email"></p>
    <p>年龄:<input type="text" name="age"></p>
    <p><input type="submit" value="提交"></p>
</form>

<hr>
<h1>半自动渲染模板1</h1>
<form action="" method="post">
    <p>用户名:{{ form.name }}</p>
    <p>邮箱:{{ form.email }}</p>
    <p>年龄:{{ form.age }}</p>
    <p><input type="submit" value="提交"></p>
</form>

<h1>半自动渲染模板2(用的最多)</h1>
<form action="" method="post">
    <p>{{ form.name.label }}--{{ form.name }}</p>
    <p>{{ form.email.label }}---{{ form.email }}</p>
    <p>{{ form.age.label }}---{{ form.age }}</p>
    <p><input type="submit" value="提交"></p>
</form>

<h1>半自动渲染模板3(用的最多)</h1>
<form action="" method="post">
    {% for foo in form %}
       <p>{{ foo.label }} :{{ foo }}</p>
    {% endfor %}

    <p><input type="submit" value="提交"></p>
</form>

<h1>全自动(了解)</h1>
<form action="" method="post">
{#    {{ form.as_ul }}#}
    {{ form.as_p }}
{#    <table>#}
{#        {{ form.as_table }}#}
{#    </table>#}

    <p><input type="submit" value="提交"></p>
</form>
</body>
</html>

 

标签:form,校验,介绍,label,forms,print,组件,data
From: https://www.cnblogs.com/97zs/p/17880255.html

相关文章

  • Spring MVC 源码 - HandlerAdapter 组件(二)之 ServletInvocableHandlerMethod
    HandlerAdapter组件HandlerAdapter组件,处理器的适配器。因为处理器handler的类型是Object类型,需要有一个调用者来实现handler是怎么被执行。Spring中的处理器的实现多变,比如用户的处理器可以实现Controller接口或者HttpRequestHandler接口,也可以用@RequestMapping注......
  • vant组件一个文本框添加多项校验
    下图为用户密码校验表单,需要对密码是否为空,密码长度,以及密码强度进行校验。但是“密码格式不正确!”这个校验信息并不是我想要的,我想在isPassWordStrength方法中区分开密码长度提示和密码强度提示,方便用户知道具体是什么问题导致校验不通过。<van-fieldrequiredv-model......
  • 基础介绍
    基本概念简介Kafka是由Apache开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。对于像Hadoop一样的日志数据和离线分析系......
  • React 组件通信方式
    人生的游戏不在于拿了一副好牌,而在于怎样去打好坏牌,世上没有常胜将军,勇于超越自我者才能得到最后的奖杯。1.父子组件通信方式1.1父组件传递到子组件直接通过属性进行传递,数据的传递可以提高组件的复用性。1.2子组件传递到父组件通过回调函数(callback)来实现。ref标......
  • 离散元分析有什么用?仿真软件介绍
    离散元分析是一种用于模拟颗粒材料行为的数值方法,它将颗粒材料看作由大量离散的颗粒或颗粒群组成的系统,通过模拟颗粒之间的相互作用来研究颗粒材料的力学行为、变形和破坏等现象。离散元分析在工程领域有着广泛的应用,为工程师提供了一个强大的工具,用于研究颗粒材料的行为和性能,为......
  • dom断点可定位react组件值修改
    react组件的值修改,也可以使用dom断点来定位。之前一直误区,认为react组件的修改,不能用dom断点来拦截,实际上在涉及到修改具体原生组件属性的时候,也可定位。例如:react组件内部使用了input组件,react组件值变化导致input的value发生改变,使用dom断点就可定位。由于input组件的属性修......
  • 互联网医院牌照|互联网医院资质申办条件和材料介绍
    互联网医院现在发展的非常快,开发的公司也越来越多,系统也是琳琅满目的,对于系统还是选择适合的比较重要,外观只是一方面,还有就是后续维护等等,有了系统就可以申请互联网医院牌照了,接下来小编就简单给大家介绍一下互联网医院资质申办的条件和材料。一、互联网医院牌照办理流程:1.确定业......
  • WPF应用框架中工作流模块的介绍
    在前面的随笔,我对我们开发的审批工作流做了不少的介绍,其中有包括WInform的、Vue+Element、BootstrapAsp.net的,在各个框架上,我们都尽量争取界面能够一致化,以便客户能够在不同的前端上有相同的用户体验,并结合不同的前端特点,做了一些优化处理,本篇随笔对WPF应用框架中工作流模块进行......
  • Vue使用el-cascader实现地区选择器组件
    1.使用组件-效果展示(推荐)1.2安装组件依赖(默认是V6版本,旧版本V5.02)官方文档地址(二级联动,三级联动包含教程):https://www.npmjs.com/package/element-china-area-datanpminstallelement-china-area-data-Snpminstallelement-china-area-data@5.0.2-S1.3V6版本使用注......
  • svg+css实现带灰色背景的loading加载动画组件
    <template><svgclass="load"viewBox="25255050":style="{width:loadWidth,height:loadWidth}"><circleclass="loading_bg"cx="50"cy="50"r="20"......