form(form基础、标签渲染)

form基础

Django中的Form使用时一般有两种功能:

1、生成html标签

2、验证输入内容

要想使用django提供的form,要在views里导入form模块

  from django import forms

首先我们创建我们的模版

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<h3>普通方式</h3>

<form action=""method="post">
    {% csrf_token %}
    <div>
        <label for=‘user‘>用户名</label>
        <p><input type="text" name="name" id="name"></p>
    </div>
    <div>
        <label for=‘pwd‘>密码</label>
        <p><input type="password" name="pwd" id="pwd"></p>
    </div>
    <div>
        <label for=‘r_pwd‘>确认密码</label>
        <p><input type="password" name="r_pwd" id="r_pwd"></p>
    </div>
    <div>
        <label for=‘email‘>邮箱</label>
        <p><input type="email" name="email" id="email"></p>
    </div>
     <input type="submit">
</form>
</body>
</html>

然后我们来定义一个form 类,以及我们需要掌握的一些基础知识,这些代码全部写在 试图页面里。

from django.shortcuts import render,HttpResponse
from django.forms import widgets
# Create your views here.

from django.forms import widgets
from django import forms

#创建form表单验证规则
class UserForm(forms.Form):
    name = forms.CharField(min_length=4),
    pwd = forms.CharField(min_length=6),
    r_pwd = forms.CharField(min_length=6),
    email = forms.EmailField(),

def index(request):
    if request.method == ‘POST‘:
        form = UserForm(request.POST)
        #如果输入全部符合规则判断为真将结果传递给 changed_data,并打印
        print(‘form.is_vaild---------‘,form.is_valid())
        if form.is_valid():
            print(form.changed_data)
        #如果失败,打印为真的值,打印错误,获取错误字典中name 的错误值。
        else:
            print(form.cleaned_data)
            print(‘错误信息的类型---------‘,type(form.errors))
            print(form.errors)
            print(form.errors.get(‘name‘))
        return HttpResponse(‘ok‘)
    form=UserForm()

    return render(request,‘index.html‘)

如果输入正确的验证信息

后台输出

form.is_vaild--------- True

{‘name‘: ‘召唤精灵‘, ‘pwd‘: ‘1111111111‘, ‘r_pwd‘: ‘1111111111‘, ‘email‘: ‘[email protected]‘}

可以看出输入符合验证条件的数据, is_vaild  会返回 True  ,然后正确信息会存储到cleaned_data 中

下面输入一下错误验证信息

form.is_vaild--------- False
错误信息的类型--------- <class ‘django.forms.utils.ErrorDict‘>
获取错误信息字典 <ul class="errorlist"><li>name<ul class="errorlist"><li>Ensure this value has at least 4 characters (it has 3).</li></ul></li></ul>
<ul class="errorlist"><li>Ensure this value has at least 4 characters (it has 3).</li></ul>

可以看到类型是已字典到形式存储到,然后咱们通过字典到的取值方法 get 取到验证错误到报错信息。

如果同时有错误有正确会怎么样

form.is_vaild--------- False
{‘pwd‘: ‘11111111111‘, ‘r_pwd‘: ‘1111111111‘, ‘email‘: ‘[email protected]‘}
错误信息的类型--------- <class ‘django.forms.utils.ErrorDict‘>
获取错误信息字典 <ul class="errorlist"><li>name<ul class="errorlist"><li>Ensure this value has at least 4 characters (it has 3).</li></ul></li></ul>
<ul class="errorlist"><li>Ensure this value has at least 4 characters (it has 3).</li></ul>

虽然验证失败了,但是cleaned_data中保留了正确的验证信息。

标签渲染

方式一

<h3>方式一</h3>

<form action="" method="post">
    {% csrf_token %}
    <div>
        <label for="">用户名</label>
        {{ form.name }}
    </div>
    <div>
        <label for="">密码</label>
        {{ form.pwd }}
    </div>
    <div>
        <label for="">确认密码</label>
        {{ form.r_pwd }}
    </div>
    <div>
        <label for=""> 邮箱</label>
        {{ form.email }}
    </div>
    <input type="submit" >
</form>

方式二

需要给form验证条件,添加 label属性

class UserForm(forms.Form):
    name = forms.CharField(min_length=4,label=‘用户名‘)
    pwd = forms.CharField(min_length=6,label=‘密码‘)
    r_pwd = forms.CharField(min_length=6,label=‘确认密码‘)
    email = forms.EmailField(label=‘邮箱‘)
<h4>方式二</h4>
<form action="" method="post">
    {% csrf_token %}
    {% for foo in form %}
        <div>
            <label for="">{{ foo.label }}</label>
         {{ foo }}
        </div>

    {% endfor %}
    <input type="submit">

方式三

<h4>方式三</h4>
<form action="" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit">
</form>

小结:

虽然这三种标签渲染的方式 第三种最为简介方便,但是局限性也最大,不能根据自己的需求调整标签,只能使用他提供的方法,如果常用的话还是选择第二种标签渲染方式。

原文地址:https://www.cnblogs.com/mjiu/p/10134411.html

时间: 2024-10-15 12:52:25

form(form基础、标签渲染)的相关文章

HTML table、form表单标签的介绍

本篇主要介绍 table.form标签以及表单提交方式. 目录 1. <table> 标签:在HTML 中定义表格布局. 2. <form> 标签:用于创建 HTML 表单. 3. 表单提交方式:介绍get.post方法. 1. <table> 标签 1.1 说明 在HTML 中定义表格布局. 1.2格式 <table> <caption></caption> <tr> <th></th></

SpringMVC&lt;from:form&gt;表单标签和&lt;input&gt;表单标签简介 转http://blog.csdn.net/hp_yangpeng/article/details/51906654

SpringMVC<from:form>表单标签和<input>表单标签简介 在使用SpringMVC的时候我们可以使用spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍SpringMVC的表单标签之前,我们需要先在JSP中声明使用的标签,具体做法是在JSP文件的顶部加入以下指令: Jsp代码 <%@taglib uri="http://www.springframework.org/tags/fo

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

form表单标签及属性的介绍

版权声明:本文为博主原创文章,未经博主允许不得转载. 一. 表单标签 <form></form> 常用属性 Action 跳转到什么页面 Method  以什么模式提交 Get Url有长度限制 IE6.0 url 最大长度 2083个字符 超过无法提交 IE7.0 最大长度 2083个字符 超过最大长度仍然可以提交但是只能提交2083个字符 Opera 9.52 最大长度7648个字符 超过最大长度无法提交 所有提交内容会显示到地址栏位置 很不安全 a标签的跳转方式也是get方式

form表单标签的enctype属性的作用

Enctype是指定将数据回发到服务器时浏览器使用的编码类型,其编码类型有以下三种 一. application/x-www-form-urlencoded 这是通过表单发送数据时默认的编码类型.我们没有在from标签中设置enctype属性时默认就是application/x-www-form-urlencoded类型的.application/x-www-form-urlencoded编码类型会把表单中发送的数据编码为名称/值对.这是标准的编码格式.当表单的ACTION为POST的时候,浏览

Form和input标签的使用

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>input的使用</title></head><body> <!--复选框,如果需要用户输入多个就选用这个--> <!--<input type="checkbox">--> <

如何用Spring框架的&lt;form:form&gt;标签实现REST风格的增删改查操作

1.首先创建两个bean类,Employee(职工)和Department(部门),一个部门可以有多个职工 Employee类(属性:职工ID:id:姓名:lastName:邮箱:email:性别:gender:所属部门:department) 1 package com.bwlu.bean; 2 public class Employee { 3 private Integer id; 4 private String lastName; 5 private String email; 6 /

winform的Form窗体基础

最近搞一个winform的socket编程的课设,平时对winform这块没有研究,以为和C# web差不多的,不曾想窘状百出.没办法,只能硬着头皮赶紧学Form窗体的一些基本知识和socket编程. 首先,谈一谈学Form窗体的一些认识和感悟. 1.关于窗体应用的创建就不说了,当我们在一个项目中添加了多个窗体, 随之而来的调试问题就是:怎么设置首先运行的窗体呢? 解决方案:一般我们建项目之后,在项目中我们会找到有Program.cs文件,双击打开之后里面有一行:Application.Run(

form表单标签(非常重要,必须掌握)

表单标签:form(非常重要,必须掌握) form标签用于获取用户跟浏览器交互(包含输入,选择,上传文件等操作)的数据,并将数据打包发给服务端 属性 action:控制数据的提交路径 action="":默认向当前页面所在的地址提交数据 action="全路径":向当前的绝对路径的地址提交数据 action="/index/":后缀文件,将该后缀跟当前页面的地址进行拼接,并将数据提交到这个页面中 method:控制数据的提交方式(也就是请求首行中