Django Form one
前戏:
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的更多相关文章
- django: form fileupload - 1
		本节介绍 Form 中一些字段类型的使用,以文件上传字段 FileField 为例:(注,其它字段和相关用法见官方文档中的 Forms -> Built-in Fields) 一,配置 urls ... 
- django form表单验证
		一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ... 
- Django form模块使用心得
		最近用Django 写了一个网站,现在来分享一下对Django form 的一些心得. 一,创建一个表单 创建一个Form表单有两种方式: 第一种方式是继承于forms.Form,的一个子类,通过在f ... 
- Python Web框架篇:Django Form组件
		Form简介 在HTTP中,表单(form标签),是用来提交数据的,其action属性说明了其传输数据的方法:如何传.如何接收. 访问网站时,表单可以实现客户端与服务器之间的通信.例如查询,就用到了表 ... 
- Django form表单
		Form介绍 之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来.与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入, ... 
- django Form组件
		django Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建 ... 
- Django Form和ModelForm组件
		Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ... 
- 9.24 Django Form组件
		2018-9-23 20:10:04 这两天优化了自己图书管理系统 github 连接:https://github.com/TrueNewBee/pythonDemo 顺便整理了博客,写了好多总结, ... 
- [py][mx]django form验证-给db减压
		django form认证-解压db压力 一般系统都需要前后端都验证 前端验证容器逃逸破解,如通过js console口去发 试想如果后端只有db验证,那么前端无论发什么后端都查询一次db,对db压力 ... 
- Django学习笔记之Django Form表单详解
		知识预览 构建一个表单 在Django 中构建一个表单 Django Form 类详解 使用表单模板 回到顶部 构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的 ... 
随机推荐
- ThreadLocal源码解析,内存泄露以及传递性
			我想ThreadLocal这东西,大家或多或少都了解过一点,我在接触ThreadLocal的时候,觉得这东西很神奇,在网上看了很多博客,也看了一些书,总觉得有一个坎跨不过去,所以对ThreadLoca ... 
- AngularJS(八):http服务
			本文也同步发表在我的公众号“我的天空” http服务 之前我们的示例都是在本地获取模拟数据,在实际应用中,所有的项目都将不可避免的从后台获取数据,我们都是通过Ajax来实现与服务器的通信.在Angul ... 
- zabbix2升级zabbix3
			1.停服zabbix2,停服数据库/etc/init.d/zabbix_server stop/etc/init.d/mysqld stop 2.物理备份数据库cd /var/lib/mysql/ta ... 
- 如何正确配置 Nginx + PHP ???
			本文转自如何正确配置 Nginx + PHP,如有侵权,请联系管理员及时删除! 
- tomcat的work目录不是缓存
			最近发现,很多网友喜欢把tomcat的work目录里的东西叫做缓存,其实那不是很恰当,work目录只是tomcat的工作目录,也就是tomcat把jsp转换为class文件的工作目录,这也正是为什么它 ... 
- 监测元素resize
			前言 近来有需求要做分页,听起来可能有点Low. 所以我要把Low的事情做得有点逼格. 分页本身没啥,但是数据量起来了,比如十万. 要是不做点处理, 那你的页面估计爽得很,机器也爽得很. 放心,我不会 ... 
- javaSe-反射3
			package com.java.chap07.sec04; public class Student { private String name; private Integer age; publ ... 
- LibreOJ #107. 维护全序集
			内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 上传者: 匿名 splay模板题 屠龙宝刀点击就送 #include <cstdio&g ... 
- 日常-acm-子序列的和
			输入两个正整数n<m<10^6,输出,保留五位小数.输入包含多组数据,结束标记为n=m=0. 样例输入: 2 4 65536 655360 0 0 样例输出: Case 1:0.42361 ... 
- 字符编码ANSI和ASCII区别、Unicode和UTF-8区别
			ANSI码ANSI编码是一种对ASCII码的拓展:ANSI编码用0x00~0x7f (即十进制下的0到127)范围的1 个字节来表示 1 个英文字符,超出一个字节的 0x80~0xFFFF 范围来表示 ... 
