前戏:

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. 前后端分离 vue+springboot 跨域 session+cookie失效问题

    环境: 前端 vue   ip地址:192.168.1.205 后端 springboot2.0  ip地址:192.168.1.217 主要开发后端. 问题: 首先登陆成功时将用户存在session ...

  2. spring4、hibernate4整合xml配置

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  3. 阿里开发搜索(OpenSearch)的学习与使用

    概述: 开放搜索(OpenSearch)是一款结构化数据搜索托管服务,为移动应用开发者和网站站长提供简单.高效.稳定.低成本和可扩展的搜索解决方案. OpenSearch基于阿里巴巴自主研发的大规模分 ...

  4. Python3+Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )

    !/usr/bin/env python -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记14(等待判断 鼠标事件 )'''from selenium im ...

  5. Array - Merge Sorted Array

    /** * 将nums2中的值合并入nums1,使其仍然有序 * 可以任务nums1的长度>=m+n * @param nums1 已排序数组 * @param m nums1数组已初始化的数目 ...

  6. 在DataGridView控件中隔行换色

    实现效果: 知识运用: DataGridViewRow类的公共属性DefaultCellStyle的BackColor属性 public Color BackColor {get; set;} 实现代 ...

  7. 免费手机号码归属地API查询接口

    免费手机号码归属地API查询接口 一.淘宝网API API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=1585078144 ...

  8. 【转】树莓派3代3.5寸触摸屏驱动的安装(通过ssh安装)

    这是用到的配件的树莓派3代 烧录好系统后,启动的树莓派,我的树莓派已经在一开始通过路由器和局域网,登陆了ssh,设置好了开机就能自动连接到电脑的360wifi,所以无论到哪 里,只要自己的笔记本电脑还 ...

  9. JDK的安装以及环境变量的配置

    一.JDK的安装 1.百度搜索jdk1.8 2.进入网页选择Downloads 3. 选择电脑的版本(x86 32位 x64 64位) 4.下载好后,直接双击即可,一直下一步即可完成安装 二.环境变量 ...

  10. mac层到ath9k层,ath9k层到硬件层

    如上图,整个 mac 层分成两个部分——UMAC 和 LMAC.LMAC 分成 MAC 下半部分和硬件抽象层. 硬件抽象层和ath9k层的连接 在hw.h中的函数struct ath_hw_ops() ...