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 ...
随机推荐
- golang interface判断为空nil
要判断interface 空的问题,首先看下其底层实现. interface 底层结构 根据 interface 是否包含有 method,底层实现上用两种 struct 来表示:iface 和 ef ...
- Go 并发控制--WaitGroup的使用
开发过程中,经常task之间的同步问题.例如,多个子task并发完成一部分任务,主task等待他们最后结束. 在Go语言,实现同步的一种方式就是WaitGroup. Example package m ...
- MyBatis中的@Mapper注解及配套注解使用详解(上)
前言: 从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件(那个xml写的是真的蛋疼...).很恶心的一个事实是源码中并没有对于这个注解的详细解释 现在我们 ...
- Windows Azure Virtual Network (12) 虚拟网络之间点对点连接VNet Peering
<Windows Azure Platform 系列文章目录> 在有些时候,我们需要通过VNet Peering,把两个虚拟网络通过内网互通互联.比如: 1.在订阅A里的Virtual N ...
- 让WebBrowser在非兼容模式下运行
32 bit: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_ ...
- [Android] 配置build.gradle 动态传参
(1)一个Android工程中有一个build.gradle是负责Project范围的,而Module中又有各自的build.gradle是专门负责模块的. (2)在Gradle中Task是一等公民, ...
- [蓝桥杯]ALGO-49.算法训练_寻找数组中最大值
题目描述: 问题描述 对于给定整数数组a[],寻找其中最大值,并返回下标. 输入格式 整数数组a[],数组元素个数小于1等于100.输出数据分作两行:第一行只有一个数,表示数组元素个数:第二行为数组的 ...
- STL进阶--狡猾的反向迭代器
反向迭代器 两种声明反向迭代器的方法 reverse_iterator<vector<int>::iterator> ritr; vector<int>::reve ...
- 【Mysql】事务日志-Write Ahead logging vs command-logging(转)
原理讲解: Write Ahead logging vs command logging Write Ahead logging 持久化数据保存在磁盘,数据的存储是随机的,并非顺序: 内存中保存磁盘数 ...
- php的语法
常量:不变的量: php 设置常量的方法:define()方法: define("常量名","常量的值",true) 参数三:大小写是否敏感: php中的常量, ...