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 ...
随机推荐
- nginx初探,下载安装配置负载均衡
上一篇我讲了正向代理和反向代理的概念,这个是为nginx做准备的前置技能,网上百度nginx可以知道nginx是什么: Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/PO ...
- skip-grant-tables 修改linux的mysql忘记root密码
skip-grant-tables 修改linux的mysql忘记root密码 今天修改mysql中的admin用户权限,在执行update user set host =' %' where use ...
- Java开发JDBC连接数据库
Java开发JDBC连接数据库 创建一个以JDBC连接数据库的程序,包含6个步骤: JDBC五部曲1.加载驱动2.获得链接3.获取statement对象 4.执行SQL语句5.产生resultset对 ...
- winform showDialog() 退出问题
今日发现: 当返回值为Dialog.OK时,会自动退出,不需要this.close().别的返回值仍需要.
- 关于org.springframework.web.filter.CharacterEncodingFilter的学习
介绍 org.springframework.web.filter.CharacterEncodingFilter 这是一个过滤器,是Spring在web请求中定义request和response的编 ...
- 【转】cocos2dx 3.x 集成protobuf
http://www.cnblogs.com/chevin/p/6001872.html vs2013+cocos2dx 3.13.1 这篇博文是集成Lua版本的protobuf,集成C++版本的过程 ...
- IDEA里面添加lombok插件,编写简略风格Java代码
在 java平台上,lombok 提供了简单的注解的形式来帮助我们消除一些必须有但看起来很臃肿的代码, 比如属性的get/set,及对象的toString等方法,特别是相对于 POJO; 关于lomb ...
- 【考试记录】4.8 Path (网络流 —— 劲题)
手抄代码 + 学习指针 + 冥思苦想一晚上终于——在一瞬间开窍了.果然题目都是这样:突破了一个点,一切都是柳暗花明. 题面描述: 样例: 这道题目,首先注意到给定的边的性质:这些边在平面上构成了一棵树 ...
- [CF1066C]Books Queries
题目大意:维护一个数列,要求在左边插入一个数,在右边插入一个数,查询一个数的排名 题解:可以双指针,开个数组存每个数的位置 卡点:无 C++ Code: #include <cstdio> ...
- 【COGS 1873】 [国家集训队2011]happiness(吴确) 最小割
这是一种最小割模型,就是对称三角,中间双向边,我们必须满足其最小割就是满足题目条件的互斥关系的最小舍弃,在这道题里面我们S表示文T表示理,中间一排点是每个人,每个人向两边连其选文或者选理的价值,中间每 ...