前戏:

FromData:三种方式获取FromData

1. 创建一个FromData 的对象,然后再用append 的方法追个添加键值对

var formdata = new FormData();

formdata.append('name','mihon');

formdata.append('url','/app01/login');

2.获取form元素对象,将它作为参数传入FormData对象中!

var formobj = document.getElementById('form');

var formdata = new FormData(formobj);

3.利用form 元素对象的getFormData方法生成。

var formobj = document.getElementById('form');

var formdata = formobj.getFormData()

ajax upload file:

1.processData设置为false。因为data值是FormData对象,不需要对数据做处理

2.contentType设置为false,不设置contentType值,因为是由<form>表单构造的FormData对象,

且已经声明了属性enctype="multipart/form-data",所以这里设置为false。

3.<form>标签添加enctype="multipart/form-data"属性

4.cache设置为false,上传文件不需要缓存。

eg.

<form id="uploadForm" enctype="multipart/form-data">

<input id="file" type="file" name="file"/>

<button id="upload" type="button">upload</button>

</form>

$.ajax({

url: '/upload',

type: 'POST',

cache: false,

data: new FormData($('#uploadForm')[0]),

processData: false,

contentType: false

}).done(function(res) {

}).fail(function(res) {});

source link:http://www.cnblogs.com/wupeiqi/articles/6144178.html

导入模块:

from django.froms import From

from django.froms import widgets

from django.froms import fields

1.建立模板:

class MyForm(From):

user = fields.CharField(min_length=6)

1.字段

Field:

require = True, 是否必填

widget = {}, 插件

label=None, 用于生成Label标签或显示内容

initial=None, 初始值

help_text='',                帮助信息(在标签旁边显示)

error_messages=None,         错误信息 {'required': '不能为空', 'invalid': '格式错误'}

show_hidden_initial=False,   是否在当前插件后面再加一个隐藏的且具有默认值的插件(可用于检验两次输入是否一直)

validators=[],               自定义验证规则

localize=False,              是否支持本地化

disabled=False,              是否可以编辑

label_suffix=None            Label内容后缀

CharField(Field)

max_length=None,             最大长度

min_length=None,             最小长度

strip=True                   是否移除用户输入空白

IntegerField(Field)

max_value=None,              最大值

min_value=None,              最小值

DecimalField(IntegerField)

max_value=None,              最大值

min_value=None,              最小值

max_digits=None,             总长度

decimal_places=None,         小数位长度

RegexField(CharField)

regex,                      自定制正则表达式

max_length=None,            最大长度

min_length=None,            最小长度

error_message=None,         忽略,错误信息使用 error_messages={'invalid': '...'}

BaseTemporalField(Field)

input_formats=None          时间格式化

DateField(BaseTemporalField)    格式:2015-09-01

TimeField(BaseTemporalField)    格式:11:12

DateTimeField(BaseTemporalField)格式:2015-09-01 11:12

DurationField(Field)            时间间隔:%d %H:%M:%S.%f

...

RegexField(CharField)

regex,                      自定制正则表达式

max_length=None,            最大长度

min_length=None,            最小长度

error_message=None,         忽略,错误信息使用 error_messages={'invalid': '...'}

ModelChoiceField(ChoiceField)

...                        django.forms.models.ModelChoiceField

queryset,                  # 查询数据库中的数据

empty_label="---------",   # 默认空显示内容

to_field_name=None,        # HTML中value的值对应的字段

limit_choices_to=None      # ModelForm中对queryset二次筛选

eg:

使用django提供的ModelChoiceField和ModelMultipleChoiceField字段来实现

from django import forms

from django.forms import fields

from django.forms import widgets

from django.forms import models as form_model

from django.core.exceptions import ValidationError

from django.core.validators import RegexValidator

class FInfo(forms.Form):

authors = form_model.ModelMultipleChoiceField(queryset=models.NNewType.objects.all())

自定义验证规则:

from django.forms import Form

from django.forms import widgets

from django.forms import fields

from django.core.validators import RegexValidator

class MyForm(Form):

user = fields.CharField(

validators=[RegexValidator(r'^[0-9]+$', '请输入数字'), RegexValidator(r'^159[0-9]+$', '数字必须以159开头')],

)

3.插件

widgets.RadioSelect(choices=((1,'SH'),(2,'BJ'),))

widgets.SelectFiled(choices=((1,'SH'),(2,'BJ'),)) #单选select

widgets.MultipleChoiceFiled(choices=((1,'SH'),(2,'BJ'),)) #多选select

2.View 函数处理:

obj = MyForm(request.Post)  #获取MyFrom 对象,封装了前端发送过来的数据

obj.is_valid() #规则验证通过返回True,否则返回False

obj.clean() #在验证通过之后获取,前端提交的数据

obj.errors() #验证失败,获取错误信息

obj.errors.as_json() #返回json 类型的错误信息

obj.errors.data() #return 直接数据类型

3.HTML template处理:

{{obj.user}} #渲染input的标签

{{obj.user.errors}}#渲染li标签,带有错误信息

{{obj.errors.user.0}} #获取错误信息的字符串,<span>{{obj.errors.user.0}}<span/>

其他标签:

{{obj.user.label}}#生成label标签<!label = '用户名',默认label = 'False'>

{{obj.user.label.id_for_label}}

{{obj.user.label_tag}} #label_tag标签,click label 时选中input标签

自定义验证规则:

from django import forms

form django.forms import fields

form django.forms import widgets

from django.core.exceptions import ValidationError

form django.core.validators import RegexValidator

class FInfo(forms.Form):

username = fields.CharField(max_length=5,

vaidators=[RegexValidator(r'^[0-9]+$','Enter a ')])

Django Form one的更多相关文章

  1. django: form fileupload - 1

    本节介绍 Form 中一些字段类型的使用,以文件上传字段 FileField 为例:(注,其它字段和相关用法见官方文档中的 Forms -> Built-in Fields) 一,配置 urls ...

  2. django form表单验证

    一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...

  3. Django form模块使用心得

    最近用Django 写了一个网站,现在来分享一下对Django form 的一些心得. 一,创建一个表单 创建一个Form表单有两种方式: 第一种方式是继承于forms.Form,的一个子类,通过在f ...

  4. Python Web框架篇:Django Form组件

    Form简介 在HTTP中,表单(form标签),是用来提交数据的,其action属性说明了其传输数据的方法:如何传.如何接收. 访问网站时,表单可以实现客户端与服务器之间的通信.例如查询,就用到了表 ...

  5. Django form表单

    Form介绍 之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来.与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入, ...

  6. django Form组件

    django Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建 ...

  7. Django Form和ModelForm组件

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...

  8. 9.24 Django Form组件

    2018-9-23 20:10:04 这两天优化了自己图书管理系统 github 连接:https://github.com/TrueNewBee/pythonDemo 顺便整理了博客,写了好多总结, ...

  9. [py][mx]django form验证-给db减压

    django form认证-解压db压力 一般系统都需要前后端都验证 前端验证容器逃逸破解,如通过js console口去发 试想如果后端只有db验证,那么前端无论发什么后端都查询一次db,对db压力 ...

  10. Django学习笔记之Django Form表单详解

    知识预览 构建一个表单 在Django 中构建一个表单 Django Form 类详解 使用表单模板 回到顶部 构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的 ...

随机推荐

  1. 用于<挣值管理>的各种指标计算

    PV(Planning Value) 含义:计划价值,截至到某个时间计划工作经批准的成本预算. 公式:PV=计划工作数X计划单价. BAC 含义:完工预算,截至到完工时间计划工作经批准的成本预算,即完 ...

  2. 上传图片转为blob URL和计算文件大小

    { getFileUrl: function getFileUrl(fileInputId) { var uri = { url: '', filename: '', filetype: '', da ...

  3. JavaScript笔记5-事件

    一.概述: 事件是可以被JavaScript侦测到的行为.网页中的每个元素都可以产生某些可以触发JavaScript函数的事件.相当于让标签在满足某种条件的时候,调用指定的方法. 二.常用事件 1:o ...

  4. log4cxx安装使用

    log4cxx安装使用 log4cxx现在是apache的一个项目,用来记录日志.看名字就知道,是给c++使用的. 环境(在以下2个环境中进行验证测试): gcc (Ubuntu 4.8.4-2ubu ...

  5. LR脚本示例之URL请求(post、get)

    Action(){ //application/x-www-form-urlencoded //application/json //web_add_auto_header("Content ...

  6. 两个div并列居中显示——当display:inline-block;时,两个div无法对齐即一高一矮

    解决办法: 给div添加样式vertical-align: top;

  7. GWT module 'xxx' may need to be (re)compiled解决办法

    使用GWT Eclipse Plug-in开发GWT应用,启动程序,在浏览器地址栏中输入http://127.0.0.1:8888/HelloWorld.html,没有出现我所期望的结果,而是弹出如下 ...

  8. Python XML 解析

    什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. XML 是一套定义语义标记的规则,这些标记将文档分成许多部件并 ...

  9. idea前后端分离搭建 JavaWeb项目

    我们小组在开发的时候, 承诺了前后端分离, 那么就要求前端和后端需要分开搭建. 不能同时放在一个工程项目中. 大致的思路是开启两个Tomcat, 一个跑前端页面, 一个跑后端程序. 1. idea打开 ...

  10. 实验1 c语言最基本内容

    part 1 验证性内容 总结:经受了数组和结构体的双重折磨后,发现这部分好简单...现在没啥问题了... part  2  补全程序 1.判断奇偶 // 程序功能: // 要求用户从键盘输入一个整数 ...