当前位置: 首页 > 编程日记 > 正文

WTForms 小计1 forms

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

相关文章:

day32-1 事件Event

事件Event-线程 每一个线程都是独立运行且状态不可预测。你把一个任务丢到子线程中&#xff0c;这个任务将异步执行&#xff0c;如何获取到这个任务的执行状态&#xff1f;使用threading库中的Event对象。对象包含一个可由线程设置的信号标志&#xff0c;线程直到等到该标志为真…

uboot引导kernel - 2- uboot/kernel需要放在DDR什么位置的问题

uboot启动Linux内核过程分为4大步骤&#xff1a; 问题2&#xff1a; uboot阶段DDR的分区的问题 上述步骤2和步骤4中&#xff0c;有将uboot/kernel拷贝纸DDR的步骤&#xff0c;具体要拷贝到DDR的什么位置呢&#xff1f; 分清楚这两个概念&#xff1a; 链接地址&#xff1a;链接…

java ftp pasv_Ftp主动模式和被动模式以及java连接ftp模式设置

FTP的主动模式与被动模式FTP服务器使用20和21两个网络端口与FTP客户端进行通信。FTP服务器的21端口用于传输FTP的控制命令&#xff0c;20端口用于传输文件数据。FTP主动模式&#xff1a;FTP客户端向服务器的FTP控制端口(默认是21)发送连接请求&#xff0c;服务器接受连接&#…

Python2.7 安装numpy报错解决方法

Windows 10下用pip安装numpy包报错&#xff1a; Microsoft Visual C 9.0 is required Unable to find vcvarsall.bat Get it from http://aka.ms/vcpython27 通过报错提示信息&#xff0c;打开http://aka.ms/vcpython27会跳转到Microsoft Visual C Compiler for Python 2.7的下…

异常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>/*&…

UNDO表空间损坏,爆满,ORA-600[4194]/[4193]错误解决

模拟手工删除UNDO表空间 在ORADATA 中把UNDOTBS01.DBF 删除模拟启库SQL> STARUP;*第 1 行出现错误:ORA-01157: 无法标识/锁定数据文件 2 - 请参阅 DBWR 跟踪文件ORA-01110: 数据文件 2: C:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF利用系统本身的默认手动管理 MAN…

uboot引导kernel - 3 -uboot给内核传参详解

uboot中执行theKernel函数后&#xff0c;kernel正式启动。如下函数&#xff0c;我们发现有3个参数。 1. 参数 0&#xff1b; 2. 参数machid; 如下code 中获取machid, gd是个全局变量. 2.1 bi_arch_number是board_info中的一个元素&#xff0c;含义是&#xff1a;开发板的机器…

hdu 1166 敌兵布阵(树状数组)

题意&#xff1a;区间和 思路&#xff1a;树状数组 #include<iostream> #include<stdio.h> #include<string.h> using namespace std;int n,c[50005];int lowbit(int i){return i&-i; }void update(int i,int val){//更新函数while(i<n){//注意这个n的…

java jdbc 表存在_使用JDBC查询是否存在某表或视图,按月动态生成表

查询数据库是否有某表的存在&#xff0c;主要用的就是Connection对象对元数据的操作&#xff0c;代码很简单&#xff0c;贴出来大家参考。/*** 查询数据库是否有某表* param cnn* param tableName* return* throws Exception*/SuppressWarnings("unchecked")public b…

linux串口驱动分析

linux串口驱动分析硬件资源及描写叙述 s3c2440A 通用异步接收器和发送器&#xff08;UART&#xff09;提供了三个独立的异步串行 I/O&#xff08;SIO&#xff09;port&#xff0c;每一个port都能够在中断模式或 DMA 模式下操作。UART 使用系统时钟能够支持最高 115.2Kbps 的波特…

计算TD-LTE DL 峰值速率的工具和相关参数

前一段时间测试DT 基站&#xff0c;需要配置TDD LTE cell 的UDC、TM模式来验证不同组合下的下行峰值速率&#xff0c;趁此机会我用excel写了一个计算下行峰值速率的工具。工具上传至我的github: https://github.com/greenricky/tdlte_dl_rate 计算峰值速率的常用办法是参考36.2…

java配置中心开源项目_配置中心搭建(spring-cloud-config-server)

1.github创建配置库2.配置服务端①创建项目②导入jarorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testorg.springframework.cloudspring-cloud-starter-netflix-eureka-clientorg.springframework.cloudspring-cloud-config-…

detection in video and image

video中的detection&#xff0c;背景更加复杂&#xff0c;目标更加不聚焦&#xff0c;同时由于图片分辨率低于图像&#xff0c;因此更加难做。 image中的Detection,背景相对简单些&#xff0c;目标更加聚焦&#xff0c;同时图片分辨率高&#xff0c;因此更加容易些。 转载于:ht…

烂泥:U盘安装Centos6.5

本文首发于烂泥行天下。使用U盘安装Centos6.5&#xff0c;需要以下几个步骤&#xff1a;1、 制作U盘linux系统2、 设置服务器BIOS3、 安装Centos&#xff0c;注意引导分区的安装首先要把U盘做成linux启动盘。网上有关这方面的软件比较多&#xff0c;在此我使用的是WinSetupFrom…

http status 汇总

http status 汇总 常见HTTP状态码 200 OK301 Moved Permanently302 Found304 Not Modified307 Temporary Redirect400 Bad Request401 Unauthorized403 Forbidden404 Not Found410 Gone500 Internal Server Error501 Not Implemented100 Continue 初始的请求已经接受&#xf…

hdu 4278 2012天津赛区网络赛 数学 *

8进制转为10进制 1 #include<cstdio>2 #include<iostream>3 #include<algorithm>4 #include<cstring>5 #include<cmath>6 #include<queue>7 #include<map>8 using namespace std;9 #define MOD 1000000007 10 const int INF0x3f3f3f…

slub object 内存布局

我在 https://blog.csdn.net/wowricky/article/details/83218126 介绍了一种内存池&#xff0c;它的实现类似于linux 中打开slub_debug (1. make menuconfig: Kenel hacking -> Memory Debugging, 2. comand line中传入slub_debugPZU) 时slub 对象池。 首先我们先看一下slub…

java wait abc_java----wait/notify

解释wait/notify必须配合synchronized使用democlass NotifyStop2 {private final Object lock new Object();public void add(String s) throws InterruptedException {Thread.sleep(1000);synchronized (lock) {System.out.println("add notify qian");//唤醒其他线…

hdu-1166敌兵布阵

这个题目就是考察线段树的基本用法&#xff0c;我自己打了代码&#xff0c;其实就是照模板来的&#xff0c;大概思想已经弄懂了。用c不能过&#xff0c;说我超时&#xff0c;就改成c的读入读出&#xff0c;这坑爹的过了。我最爱的c&#xff0c;你肿么了。。。 这是ac的代码&…

Android数据存储(三)——SQLite

如果需要一个更加健壮的数据存储机制&#xff0c;则需要使用一个关系型数据库&#xff0c;在Android上&#xff0c;则为SQLlite。 SQLite的特点&#xff1a;轻量级、嵌入式的、关系型数据库。可移植性好&#xff0c;易使用&#xff0c;小&#xff0c;高效且可靠&#xff0c;与使…

3GPP组织和协议概述

3GPP组织概述 1. TSG/WG 3GPP是以工作组开展工作的&#xff0c;目前有3个大的技术规范组&#xff1a;RAN, SA, CT, 这一级别的工作组英语写为 TSG (Technical Specification Group)。每个TSG下面又分了很多工作组(WG: work group). 详见下表&#xff1a; https://www.3gpp.or…

mysql被拖垮_说几个拖垮系统的小细节!

本文首发于个人微信公众号《andyqian》,期待你的关注&#xff01;前言有好几天没有更新了&#xff0c;期间确实比较忙些&#xff0c;以至于周末也没休息。在这期间&#xff0c;感触还是蛮深的。现在碎片化的想法等整理好后&#xff0c;再以文章的形式分享出来。今天要说的是另外…

为 区域添加 Tag

tagsinput selectTag 转载于:https://www.cnblogs.com/yunqianduan/p/4740902.html

android中文字中间有超链接的实现方法

1.XML里写&#xff1a; <resources> <string name"ACCOUNT_REGISTER_PROMPT_AGREEMENT">点击注册&#xff0c;表示同意<a href"http://www.ouragreement.com">服务协议</a></string> </resources> <TextView …

4.4 类型转换

from http://www.learncpp.com/cpp-tutorial/44-type-conversion-and-casting/ 类型隐式转换 类型隐式转换的步骤如下所示&#xff1a; Long double (highest)DoubleFloatUnsigned long intLong intUnsigned intInt (lowest) 最底层是int而不是short或是char&#xff0c;是因为…

LFSR 和 m序列

翻译自&#xff1a;sharetechnote: LFSR LFSR Linear Feedback Shift Register - 线性反馈移位寄存器 LFSR 是一种移位寄存器电路&#xff0c;其中两个或多个中间步骤的输出线性组合并反馈到输入值&#xff0c;这就是为什么它被称为线性反馈移位寄存器的原因。 该电路具有以…

python合并k个有序链表_Leetcode合并K个升序链表(Python版本),LeetCode,python

一、描述给你一个链表数组&#xff0c;每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。示例 1&#xff1a;输入&#xff1a;lists [[1,4,5],[1,3,4],[2,6]]输出&#xff1a;[1,1,2,3,4,4,5,6]解释&#xff1a;链表数组如下&…

Qt界面风格设置

每个widget都可以设置风格setStyle(QStyle style)对QApplication设置QStyle即对所有QApplication::setStyle(QStyleFactory::create("Fusion"));其他widget如过没有被设置QStyle&#xff0c;默认使用QApplication的QStyle主要可重写接口绘制复杂控件virtual void …

树莓派练习程序(蜂鸣器)

蜂鸣器模块如下图&#xff1a; 树莓派的引脚如下图&#xff1a; 我们将Vcc引脚连接物理接口1&#xff08;注意这里需要用3.3v&#xff09;&#xff0c;I/O引脚连接物理接口40&#xff0c;GND引脚连接物理接口39。 实物连接如下图&#xff1a; 编程使用WiringPi库&#xff0c;使…

Gold Code,Gold Sequence

Gold Code Gold Code是以Robert Gold的名字命名的。它是一组特殊的二进制随机(伪随机)序列&#xff0c;其中成员序列之间的相关性很小。由于这种特性(较小的相关性)&#xff0c;它被广泛地用作各种无线通信系统的扰码。 我们可以非常简单地利用 m序列 来生成Gold Code: 选择两…