WTForms 小计1 forms

news/2024/7/3 1:47:16

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

定义

from wtforms import Form, StringField, validators
class MyForm(Form):first_name = StringField(u'First Name', validators=[validators.input_required()])last_name  = StringField(u'Last Name', validators=[validators.optional()])


form继承

class PastebinEdit(Form):language = SelectField(u'Programming Language', choices=PASTEBIN_LANGUAGES)code     = TextAreaField()class PastebinEntry(PastebinEdit):name = StringField(u'User Name')


form里的验证 (跟django区别不大,也就名字换换)

class SignupForm(Form):age = IntegerField(u'Age')def validate_age(form, field):if field.data < 13:raise ValidationError("We're sorry, you must be 13 or older to register")


使用form

def edit_article(request):article = Article.get(...)form = MyForm(request.POST, article)#article 这个是可选的,用过django的应该可以理解,多是get时,初始化form里的字段数据,POST时,就没用了,POST提交时,验证的是request.POSTdef edit_article(request):form = MyForm(request.POST, username='xsds')  #这也是在get时,初始化form里的数据def edit_article(request):article = Article.get(...)form = MyForm(request.POST, article,username='xsds')#这种也可以,有关键顺序

典型事例

if request.method == 'POST' and form.validate():form.populate_obj(article)article.save()return redirect('/articles')form.validate()是否验证通过 true  or false

在模板使用form的差异;

Jinja中:

<form method="POST" action="/login"><div>{{ form.username.label }}: {{ form.username(class="css_class") }}</div><div>{{ form.password.label }}: {{ form.password() }}</div>
</form>

Django中:

<form method="POST" action="/login"><div>{{ form.username.label }}:</div><div>{{ form.password.label }}:{{ form.password }}</div>
</form>

form.data   get 或post请求的数据填充form,是这样  {"username": "dsf", "accept_rules": false, "email": null}}

form.errors    为验证通过显示form的所有错误     {"accept_rules": ["This field is required."], "email": ["Field must be between 6 and 35 characters long."]}

form.meta   是个对象 看着像form的上下文数据,可以用dir(form.meta) 查看提供的属性方法

form.populate_obj()  复制验证过的对象到一个object 如user对象

form.process()   未知

form.validate()  判断验证是否通过

form.username.data  这个字段的数据,验证后才有值,不然是空

form.username.errors   这个字段的错误信息

form.username.default  默认值

这是针对每个字段的方法,大家自己看吧,好多

"data", "default", "description", "do_not_call_in_templates", "errors", "filters", "flags", "gettext", "id", "label", "meta", "name", "ngettext", "object_data", "populate_obj", "post_validate", "pre_validate", "process", "process_data", "process_errors", "process_formdata", "raw_data", "short_name", "type", "validate", "validators", "widget"

转载于:https://my.oschina.net/012345678/blog/295566


http://lihuaxi.xjx100.cn/news/248265.html

相关文章

hadoop源码datanode序列图

2019独角兽企业重金招聘Python工程师标准>>> 转载于:https://my.oschina.net/u/572882/blog/134796

[20171225]查看并行执行计划注意的问题.txt

[20171225]查看并行执行计划注意的问题.txt--//如果使用dbms_xplan.display_cursor查看并行执行计划注意一些问题,通过例子说明:1.环境:SCOTTbook> &r/ver1PORT_STRING VERSION BANNER------------------------------ -------------- ------…

一个技术总监的忠告:精通那么多技术,你为何还是受不到重用?

这篇文章我们继续说架构师大刘的故事&#xff1a; 老田升职了&#xff0c;年薪涨到了百万级别&#xff01;这时大刘在加班搞技术攻坚的时候&#xff0c;听别的同事聊了那么一嘴。大刘心里不是滋味儿。老田和大刘其实在这家公司之前就是同事了&#xff0c;老田能到这家公司&…

论文: Data-Driven Evolutionary Optimization: An Overview and Case Studies(2):五个实例分析

Blast Furnace Optimization ---高炉优化 涉及的问题&#xff1a; 在炼化的过程中是由大概100多种复杂的物质&#xff0c;怎么样找出合理的决策向量&#xff1f;最终确立了12个决策量子向量&#xff0c;8个目标&#xff0c;下一步就是优化约束条件&#xff0c;最后选择合适的算…

异常The Struts dispatcher cannot be found. This is

2019独角兽企业重金招聘Python工程师标准>>> 原因&#xff1a;struts2的过滤器映射路径写错 解决方案&#xff1a;在web.xml中配置struts2的过滤器如下&#xff1a; <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*&…

DevExpress v17.2新版亮点—WPF篇(四)

2019独角兽企业重金招聘Python工程师标准>>> DevExpress年终击穿底价&#xff0c;单套授权低至67折&#xff01;仅剩最后6天&#xff01;查看详情>>> 用户界面套包DevExpress v17.2终于正式发布&#xff0c;本站将以连载的形式为大家介绍各版本新增内容。本…

PyCharm使用笔记

1. 解释器配置 PyCharm并不知道本地Python解释器的位置。即使知道一般会放在默认位置/usr/bin/python&#xff0c;也不知道用户运行Python脚本时想使用解释器的哪个版本&#xff0c;例如Python 2.6或者Python 3.8&#xff0c;所以需要用户配置解释器。 寻找Python的安装位置 …

论文: Data-Driven Evolutionary Optimization : An Overview and Case Studies(3) 总结部分以及自己的想法

感悟&#xff1a; 一篇论文看完了&#xff0c;就觉得行业数据的而获取以及最初的一些对数据的操作&#xff0c;无论是预处理&#xff0c;数据挖掘&#xff0c;还是人为的制造一些数据进行辅助模型的优化&#xff0c;都有很重要的作用&#xff0c;而且也让我觉得这个EA其实再再应…