前戏:

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. vfp使用笔记

    1:update数据,根据记录中某个字段的值,从另一个表中查询并填充数据 UPDATE cs2013yy SET cs2013yy.ksh=NVL((SELECT cs2013gkbm.ksh FRO ...

  2. Jquery each跳出循环

    Jquery each跳出循环break--return false--跳出所有循环continue--return true--跳出当前循环

  3. 去除inline-block间隙的几种方法

    为什么会产生间隙? 由于编写代码时的美观和可读性,在代码中添加回车或空格而产生的间隙. html代码: <ul class="container"> <li> ...

  4. 初识AutoCompleteTextView

    AutoCompleteTextView自动补全框继承自TextView和EditView,通过一个下拉框的形式可以补全信息. 可以通过setThreshold()方法指定用户输入多少个字符后开始显示 ...

  5. LayUI 完美兼容Vue.js

    <div id="app"> <form class="layui-form" action=""> <div ...

  6. js进阶之function对象

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  7. HDU 2188 悼念512汶川大地震遇难同胞——选拔志愿者(巴什博弈)

    思路:若能给对方留下m+1,就可以胜.否则败. #include <iostream> using namespace std; int main() { int t,n,m;cin> ...

  8. Aho-Corasick自动机

    在模式匹配问题中,如果模板有很多个,KMP算法就不太适合了.因为每次查找一个模板.都要遍历整个文本串.可不可以只遍历一次文本串呢?可以,方法是把所有模板组成一个大的状态转移图(称为$Aho-Coras ...

  9. Memcached笔记之分布式算法

    1.根据余数进行分散:离散度高,但是增加或者移除服务器的时候,缓存充足的代价非常大.添加服务器后,余数就会产生巨变,这样就无法获取与保存时相同的服务器,从而音像缓存的命中率. 2.Consistent ...

  10. java sql database相关收集

    1 java prepareStatement http://www.importnew.com/5006.html 2 java ENGINE=InnoDB的使用 http://www.cnblog ...