前戏:

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. DOCKER启动失败Job for docker.service failed because the control process exited with error code. See "syste mctl status docker.service" and "journalctl -xe" for details.

    [root@localhost ~]# systemctl start docker Job for docker.service failed because the control process ...

  2. java-web项目:用servlet监听器实现显示在线人数

    1.创建一个监听器 package com.listener; import javax.servlet.ServletContext; import javax.servlet.http.HttpS ...

  3. JavaScript是什么

    JavaScript是一种解释型语言而不是编译型语言,它往往被认为是一种脚本语言,而不被看作是一种真正的编程语言.也就是说,脚本语言比较简单,它们是非程序员所使用的编程语言. 如果一个程序员对Java ...

  4. 在使用seek()函数时,有时候会报错为 “io.UnsupportedOperation: can't do nonzero cur-relative seeks”,代码如下:

    __author__ = 'ZHHT' #!/usr/bin/env python # -*- coding:utf-8 -*- import os f = open("test1" ...

  5. Bootstrap设置按钮禁用

    在Bootstrap中,按钮可以使用button标签或者a标签.设置按钮禁用可以通过两种方式,一种是通用CSS样式,一种是用过JS脚本动态设置,下面举例说明! <!DOCTYPE html> ...

  6. 分享eclipse自动生成java注释方法

    设置方法介绍: eclipse中:Windows->Preferences->Java->Code Style->Code Template->Comments,然后对应 ...

  7. Codevs 1860 最大数

    题目描述 Description 设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数. 输入描述 Input Description 第一行一个正整数n. 第二行n个正整数,空格隔开 ...

  8. [神经网络]一步一步使用Mobile-Net完成视觉识别(五)

    1.环境配置 2.数据集获取 3.训练集获取 4.训练 5.调用测试训练结果 6.代码讲解 本文是第五篇,讲解如何调用测试训练结果. 上一篇中我们输出了训练的模型,这一篇中我们通过调用训练好的模型来完 ...

  9. Python-OpenCV——Image Blurring(Image Smoothing)

    通过将图像与低通滤波器内核卷积来实现图像模糊.它有助于消除噪音.它实际上从图像中去除了高频内容(例如:噪声,边缘).因此在此操作中边缘会有点模(嗯,有模糊技术,也不会模糊边缘). OpenCV主要提供 ...

  10. checkbox点击选中,再点击取消,并显示在文本框中

    function checkItem(e,itemId) { var item = document.getElementById(itemId); var $items = $(item); if ...