Django-Form 补充
一、Form的前端循环
class LoginForm(Form):
name = ...
pwd = ... def func(request):
form = LoginForm() return ren.... //不循环
<div>
{{ form.name }} {{for.errors.name.0}}
{{ form.pwd }} {{for.errors.pwd.0}}
</div>
//循环
<div>
{% for fd in form %}
{{fd.label}} {{fd}} {{fd.errors.0}}
{% endfor %}
</div>
二、自定义Form验证规则
from正则校验的方法有三种
from django.core.exceptions import ValidationError
from django.core.validators import RegexValidator
def func(val):
if len(val) < 15:
raise ValidationError('你太短了')#必须是ValidationError class LoginForm(Form):
name1 = fields.CharField(label='xxx', widget=widgets.Textarea, validators=[RegexValidator(regex=""),])#第一种 导入
name2 = fields.RegexField(label='xxx', widget=widgets.Textarea, regex="xxx")#第二种 name3 = fields.CharField(label=que.caption, widget=widgets.Textarea, validators=[func, "错误信息"])#第三种 func为上面的func函数
#当然对于一些复杂的逻辑建议使用钩子函数
def clean_name1(self,val):
return val
三 定义类的两种方法
第一种
class User(object):
countury='china'
def __init__(self,args):
self.args=args def get(self):
return self.args
第二种
#类名=type('类名',(继承的类,),dict)
def ff():
return 123
Foo = type('Foo',(object,),{'x1':8,'func':lambda self,arg:arg,"ff":ff})
应用
问卷调查学生填写问卷的时候动态生成form
def fun(value):
if len(value)<15:
raise ValidationError("必须超过15字") dic = {}
questions=models.Question.objects.filter(questionSuv__id=questionSuv_id).all() for question in questions: if question.type==1:
dic['option_id_%s'%question.id]=fields.ChoiceField(
label=question.title,
widget=widgets.RadioSelect,
choices=models.Option.objects.filter(question=question).values_list("id","title"),
error_messages={"required": "必选"},
)
elif question.type ==2:
dic['value_%s'%question.id]=fields.ChoiceField(
label=question.title,
widget=widgets.RadioSelect,
choices=[(i,i) for i in range(1,11)],
error_messages={"required":'必选'},
) else:
dic["content_%s"%question.id]=fields.CharField(
label=question.title,
widget=widgets.Textarea,
error_messages={"required":'必填'},
validators=[fun,],
) #创建对象的另一种方法 这是动态生成form
JoinQuestionSuvForm = type('JoinQuestionSuvForm', (Form,), dic)
Django-Form 补充的更多相关文章
- day20 FORM补充(随时更新),F/Q操作,model之多对多,django中间件,缓存,信号
python-day20 1.FROM生成select标签的数据应该来源于数据库. 2.model 操作 F/Q (组合查询) 3.model 多对多操作. 4.中间件 :在请求到达url前先会经过 ...
- django form表单验证
一. django form表单验证引入 有时时候我们需要使用get,post,put等方式在前台HTML页面提交一些数据到后台处理例 ; <!DOCTYPE html> <html ...
- Django form表单
Form介绍 之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来.与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入, ...
- Django Form和ModelForm组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- Python学习---django知识补充之CBV
Django知识补充之CBV Django: url --> def函数 FBV[function based view] 用函数和URL进行匹配 url --> ...
- Django学习笔记之Django Form表单详解
知识预览 构建一个表单 在Django 中构建一个表单 Django Form 类详解 使用表单模板 回到顶部 构建一个表单 假设你想在你的网站上创建一个简单的表单,以获得用户的名字.你需要类似这样的 ...
- Django学习笔记之Django Form表单
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- Django Form and ModelForm
Form介绍 在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输 ...
- 6月28日 Django form组件 和 modelform组件
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...
- django: form fileupload - 1
本节介绍 Form 中一些字段类型的使用,以文件上传字段 FileField 为例:(注,其它字段和相关用法见官方文档中的 Forms -> Built-in Fields) 一,配置 urls ...
随机推荐
- Qt C++ 并发,并行,多线程编程系列1 什么是并发
什么是并发,并发往简单来说就是两个或多个独立的任务同时发生,在我们的生活中也是随处可见.如果把每个人都当作一个独立的任务,那每个人可以相互独立的生活,这就是并发. 在计算机的系统里面,并发一般有两种, ...
- Python-学习-小例子练习
网上了点小例子,练习一下下,都是特别简单的.而且这些代码也都是找的网上的代码,目的是在于练习一下Python和熟悉下Python的编码风格等等 学习一门语言,最快的方法就是把它用在世界的开发中,这样才 ...
- SPRITEKIT游戏框架之关于PHYSICS物理引擎属性
Spritekit提供了一个默认的物理模拟系统,用来模拟真实物理世界,可以使得编程者将注意力从力学碰撞和重力模拟的计算中解放出来,通过简单地代码来实现物理碰撞的模拟,而将注意力集中在更需要花费精力的地 ...
- 测试理论-selenium的工作原理
- MySQL 5.6查看数据库的大小
1. use information_schema; 2. select concat(round(sum(data_length/1024/1024),2),'MB') as data from t ...
- linux下easy_install的安装与使用详解
Python中的easy_install工具用起来非常好用,它的作用类似于Php中的pear,或者Ruby中的gem,或者Perl中的cpan. 1.easy_install安装 如果想使用easy_ ...
- 【Python】python函数每日一讲 - dir()
最近确实是有些忙,刚过了年,积攒了很多事情需要处理,所以每日一函数只能是每两天更新一篇,在这里和大家致歉. 今天我们来看一个非常重要的函数:dir() 中文说明:不带参数时,返回当前范围内的变量.方法 ...
- StanFord 编程方法
教程下载地址:http://www.yyets.com/resource/26208 定制工具下载地址:http://www.stanford.edu/class/cs106a/cgi-bin/cla ...
- PAT 1055 集体照
https://pintia.cn/problem-sets/994805260223102976/problems/994805272021680128 拍集体照时队形很重要,这里对给定的 N 个人 ...
- 大数据Hadoop-1
大数据Hadoop学习之搭建hadoop平台(2.2) 关于大数据,一看就懂,一懂就懵. 一.概述 本文介绍如何搭建hadoop分布式集群环境,前面文章已经介绍了如何搭建hadoop单机环境和伪分 ...