flask表单标签
环境:python2.7+flask+flask_wtf
内容:flask的部分常用表单标签
test.py
# -*- coding: utf-8 -*-
# flask web_form 表单控件
import flask
from flask_wtf import FlaskForm
from wtforms import *
from wtforms.fields import (StringField, PasswordField, DateField, BooleanField,
SelectField, SelectMultipleField, TextAreaField,
RadioField, IntegerField, DecimalField, SubmitField)
from wtforms.validators import DataRequired, Length, Email, EqualTo, NumberRange
from flask_wtf.file import FileField, FileRequired, FileAllowed
from flask import Flask, render_template, redirect
app = Flask(__name__)
#from flask_uploads import UploadSet, configure_uploads, IMAGES, patch_request_class
import os
from os import path
d = path.dirname(__file__)
###保护字段 app.config['SECRET_KEY'] = 'a random string'
'''
app.config['UPLOADED_PHOTOS_DEST'] = os.getcwd()
photos = UploadSet('photos', IMAGES)
configure_uploads(app, photos)
patch_request_class(app)
'''
###定义表单
class NewsForm(FlaskForm):
# Text Field类型,文本输入框,必填,用户名长度为4到25之间
username = StringField('Username', validators=[Length(min=4, max=25)])
# Text Field类型,文本输入框,Email格式
email = StringField('Email Address', validators=[Email()])
# Text Field类型,密码输入框,必填,必须同confirm字段一致
password = PasswordField('Password', [
DataRequired(),
EqualTo('confirm', message='Passwords must match')
])
# Text Field类型,密码输入框
confirm = PasswordField('Repeat Password')
id = HiddenField('id', default='')
image = FileField(validators=[
FileRequired('no files'),
FileAllowed(['jpg', 'png'], 'Images only!')
])
# Text Field类型,文本输入框,必须输入整型数值,范围在16到70之间
age = IntegerField('Age', validators=[NumberRange(min=16, max=70)])
# Text Field类型,文本输入框,必须输入数值,显示时保留一位小数
height = DecimalField('Height (Centimeter)', places=1)
# Text Field类型,文本输入框,必须输入是"年-月-日"格式的日期
birthday = DateField('Birthday', format='%Y-%m-%d')
# Radio Box类型,单选框,choices里的内容会在ul标签里,里面每个项是(值,显示名)对
gender = RadioField('Gender', choices=[('m', 'Male'), ('f', 'Female')],validators=[DataRequired()])
# Select类型,下拉单选框,choices里的内容会在Option里,里面每个项是(值,显示名)对
job = SelectField('Job', choices=[
('teacher', 'Teacher'),
('doctor', 'Doctor'),
('engineer', 'Engineer'),
('lawyer', 'Lawyer')
]) # Select类型,多选框,choices里的内容会在Option里,里面每个项是(值,显示名)对
hobby = SelectMultipleField('Hobby', choices=[
('swim', 'Swimming'),
('skate', 'Skating'),
('hike', 'Hiking')
])
# Text Area类型,段落输入框
description = TextAreaField('Introduction of yourself')
# Checkbox类型,加上default='checked'即默认是选上的
accept_terms = BooleanField('I accept the Terms of Use', default='checked',
validators=[DataRequired()])
# Submit按钮
submit = SubmitField('Register')
###控制器
@app.route('/test/news_form', methods=['GET','POST'])
def NewsFormViews():
form = NewsForm()
if flask.request.method == "GET":
return render_template('news_form.html',form=form)
else:
#print form.image.data
if form.validate_on_submit():
if form.id.data:
print form.id.data
if form.image.data:
filename = form.image.data.filename
form.image.data.save(path.join(d,filename))
return redirect('/test/news_form')
else:
print form.errors
###把错误信息返回到页面
return render_template('news_form.html',form=form,error=form.errors) if __name__ == '__main__':
app.run(host='127.0.0.1',port='', debug=False)
flask表单标签的更多相关文章
- flask表单,orm,csrf
flask表单是flask中最基本的功能. 它是负责HTML页面中数据采集的部分,它由三部分组成:表单标签,表单域,表单按钮组成,通过表单用户输入的数据提交给服务器. flask表单封装了WTForm ...
- SpringMVC 表单标签 & 处理静态资源
使用 Spring 的表单标签 通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显. form 标签 一般情况下,通过 ...
- SpringMVC学习系列(11) 之 表单标签
本篇我们来学习Spring MVC表单标签的使用,借助于Spring MVC提供的表单标签可以让我们在视图上展示WebModel中的数据更加轻松. 一.首先我们先做一个简单了例子来对Spring MV ...
- (转载)SPRINGMVC表单标签简介
SpringMVC表单标签简介 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍Spri ...
- 第五节:表单标签的用法——value绑定和修饰符
1.表单标签的用法--value绑定和修饰符 value绑定的写法:v-bind:value 或者简写 :value 修饰符: lazy , Number , trim . 用法如: v-model ...
- 第四节:Vue表单标签和组件的基本用法,父子组件间的通信
vue表单标签和组件的基本用法,父子组件间的通信,直接看例子吧. <!DOCTYPE html> <html> <head> <meta charset=&q ...
- SpringMVC 表单标签
引入标签库 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" ...
- SpringMVC表单标签简介
在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍SpringMVC的表单标签之前,我们需 ...
- struts2:非表单标签
非表单标签主要用于输出在Action中封装的信息,这在实际运用中是很常见的. 1. actionerror标签 <s:actionerror>标签主要用于输出错误信息到客户端,该标签将Ac ...
随机推荐
- 什么是 PWA?
出处:https://segmentfault.com/a/1190000012353473
- centos7 关闭防护墙
centos6 里面的默认防火墙 是 iptables, 所有 使用 service iptables stop 就可以停止防火墙了. 但是 centos7 里面的 防火墙 叫做 firewal ...
- git add -A /git add -u/git add .的用法
git的指令详解 在git中有好多的指令,但是今天这几个指令就很容易忘记而且还容易混淆 git add -u <==> git add –update 提交所有被删除和修改的文件到数据暂存 ...
- 【python】序列化和反序列化
序列化可以理解为:把python的对象编码转换为json格式的字符串,反序列化可以理解为:把json格式字符串解码为python数据对象.在python的标准库中,专门提供了json库与pickle库 ...
- aircrack 破解wifi密码
分享一个用aircrack破解wifi密码的步骤: 1.新建一个终端 airmon-ng check kill airmon-ng start wlan0 airodump-ng wlan0mon 此 ...
- InfluxDB 的UTC时间问题与简单的持续查询语句
原文:https://blog.csdn.net/Vblegend_2013/article/details/80904275 最近项目中使用了时序数据库InfluxDB 各方性能也是蛮强大的.但是唯 ...
- Intellij Idea编译项目下的.java文件时的编码问题
Intellij Idea编译项目下的.java文件时的编码问题 原创 2015年07月22日 21:45:14 10510 由<编译.java文件时的编码问题>可知,在编译.java文件 ...
- 1123.(重、错)Is It a Complete AVL Tree
题意:给定结点个数n和插入序列,判断构造的AVL树是否是完全二叉树? 思路:AVL树的建立很简单.而如何判断是不是完全二叉树呢?通过层序遍历进行判断:当一个结点的孩子结点为空时,则此后就不能有新的结点 ...
- QQ在开发中的应用
1 截图 2 快捷回复 1svn更新 2美术资源替换 3后端服务器模块确认 4开会吧 5策划更新
- Ubuntu 14.10 下Hadoop代码编译问题总结
问题1 protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionExceptio ...