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 ...
随机推荐
- Linux-获得命令帮助man
date:显示当前系统时间,修改时间 clock,hwclock:显示硬件时间 cal:calendar,查看日历 计时器靠晶体振荡器来完成计时 Linux: 实时时钟,rtc,real time c ...
- Windows Server2003下安装IIS服务脑图
在练习过程中,勾选“ASP.NET”后开始安装时提示要插入安装光盘,但是我安装系统时是用镜像文件在虚拟机里安装的,所以根据提示界面的提示从文件中选择相应文件复制,如下图点击确定,选择iisapp.vb ...
- spring+apache dbcp +oracle 连接池配置以及优化
特此记录 <!-- 数据源配置, 使用应用中的DBCP数据库连接池 --> <bean id="dataSource" class="org.apach ...
- 使用CodeBlocks编译64位程序(用的编译器仅仅是windows sdk的)
需求: -CodeBlocks使用nightly版本: -Windows SDK(我使用的是6.0A,即微软针对vista的,因为这个比较小,你也可以选择其他版本但是要有64位编译器.他也适用于xps ...
- nohup追加日志
背景:用脚本部署Spring Boot应用,用nohup命令进行后台运行 之前的日志处理: nohup command > myout.file 2>&1 & 导致每次用s ...
- BZOJ 3779 重组病毒 LCT+线段树(维护DFS序)
原题干(由于是权限题我就直接砸出原题干了,要看题意概述的话在下面): Description 黑客们通过对已有的病毒反编译,将许多不同的病毒重组,并重新编译出了新型的重组病毒.这种病毒的繁殖和变异能力 ...
- Java串口编程学习1-环境配置(64位Win7)
最近在做zigbee的课程设计,需要Java实现对串口数据的读写操作. 网上找了很多代码,好像都比较过时了,直接拿来用没法跑通……QAQ……然后自己写个教程留底,如有不当之处还请各位路过的大神赐教. ...
- 山科SDUST OJ Problem J :连分数
Problem J: 连分数 Time Limit: 1 Sec Memory Limit: 64 MBSubmit: 2723 Solved: 801[Submit][Status][Web B ...
- lintcode-95-验证二叉查找树
95-验证二叉查找树 给定一个二叉树,判断它是否是合法的二叉查找树(BST) 一棵BST定义为: 节点的左子树中的值要严格小于该节点的值. 节点的右子树中的值要严格大于该节点的值. 左右子树也必须是二 ...
- window下对samba的清理操作
windows清除访问samba局域网密码缓存 1.在dos窗口中输入control userpasswords2或者control keymgr.dll,然后[高级]/[密码管理],删掉保存的该机器 ...