前戏:

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. Java开发笔记(九十七)利用Runnable启动线程

    前面介绍了线程的基本用法,按理说足够一般的场合使用了,只是每次开辟新线程,都得单独定义专门的线程类,着实开销不小.注意到新线程内部真正需要开发者重写的仅有run方法,其实就是一段代码块,分线程启动之后 ...

  2. pixhawk 固件Firmware内执行make px4fmu-v2_default 编译报错解决办法

    执行下列指令报错 make px4fmu-v2_default /bin/sh: 1: Tools/check_cmake.sh: Permission denied Makefile:44: Not ...

  3. [Oracle 视图] ALL_OBJECTS

    ALL_OBJECTS ALL_OBJECTS describes all objects accessible to the current user. ALL_OBJECTS描述当前用户的可访问的 ...

  4. 小目标 | Power BI新人快速上手手册

    · 适用人群:数据分析专业人士,在数据分析方向需求发展人士 · 应用场景:数据汇报.数据可视化展现.数据建模分析 · 掌握难度:★★★★☆ 本期讲师 『PowerPivot工坊』公众号提供Power ...

  5. Python + selenium之组织unittest单元测试用例

    当增加被测功能和相应的测试用例之后unittest单元测试框架如何扩展和组织新增的测试用例的. # coding =utf-8 # calculator class Count (): def __i ...

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

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

  7. 【Python图像特征的音乐序列生成】关于音乐生成的思路转变

    在前几天的讨论会上,有师兄指出原来的方法实在是很难训练,所以我改进了音乐生成的思路. 首先,我用LSTM生成的一定是一段音乐的序列化表达,那么我就可以用成型的一些数据集去训练LSTM.为了避免生成的音 ...

  8. Android(java)学习笔记132:eclipse 导入项目是提示:某些项目因位于工作空间目录中而被隐藏。

    导致这个错误的原因是工程重名了: 并不是仅仅指文件夹重名,相信很多人也曾经修改过文件夹的名称,可惜没什么用处,关键是修改工程里面的一个文件! 也就是.project这个文件! 用记事本打开,修改一下& ...

  9. Classes and metaclasses

    http://www.sealiesoftware.com/blog/archive/2009/04/14/objc_explain_Classes_and_metaclasses.html Obje ...

  10. APT和它的超级牛力

    当你在使用apt时,例如“apt -h”会提示“本APT具有超级牛” 先把牛放一放,先学习以下关于APT的知识. APT 高级打包工具(英语:Advanced Packaging Tools,缩写为A ...