环境:python2.7+flask+flask_wtf

内容:flask的部分常用表单标签

test.py

  1. # -*- coding: utf-8 -*-
  2. # flask web_form 表单控件
  3. import flask
  4. from flask_wtf import FlaskForm
  5. from wtforms import *
  6. from wtforms.fields import (StringField, PasswordField, DateField, BooleanField,
  7. SelectField, SelectMultipleField, TextAreaField,
  8. RadioField, IntegerField, DecimalField, SubmitField)
  9. from wtforms.validators import DataRequired, Length, Email, EqualTo, NumberRange
  10. from flask_wtf.file import FileField, FileRequired, FileAllowed
  11. from flask import Flask, render_template, redirect
  12. app = Flask(__name__)
  13. #from flask_uploads import UploadSet, configure_uploads, IMAGES, patch_request_class
  14. import os
  15. from os import path
  16. d = path.dirname(__file__)
  17. ###保护字段
  18.  
  19. app.config['SECRET_KEY'] = 'a random string'
  20. '''
  21. app.config['UPLOADED_PHOTOS_DEST'] = os.getcwd()
  22. photos = UploadSet('photos', IMAGES)
  23. configure_uploads(app, photos)
  24. patch_request_class(app)
  25. '''
  26. ###定义表单
  27. class NewsForm(FlaskForm):
  28. # Text Field类型,文本输入框,必填,用户名长度为4到25之间
  29. username = StringField('Username', validators=[Length(min=4, max=25)])
  30. # Text Field类型,文本输入框,Email格式
  31. email = StringField('Email Address', validators=[Email()])
  32. # Text Field类型,密码输入框,必填,必须同confirm字段一致
  33. password = PasswordField('Password', [
  34. DataRequired(),
  35. EqualTo('confirm', message='Passwords must match')
  36. ])
  37. # Text Field类型,密码输入框
  38. confirm = PasswordField('Repeat Password')
  39. id = HiddenField('id', default='')
  40. image = FileField(validators=[
  41. FileRequired('no files'),
  42. FileAllowed(['jpg', 'png'], 'Images only!')
  43. ])
  44. # Text Field类型,文本输入框,必须输入整型数值,范围在16到70之间
  45. age = IntegerField('Age', validators=[NumberRange(min=16, max=70)])
  46. # Text Field类型,文本输入框,必须输入数值,显示时保留一位小数
  47. height = DecimalField('Height (Centimeter)', places=1)
  48. # Text Field类型,文本输入框,必须输入是"年-月-日"格式的日期
  49. birthday = DateField('Birthday', format='%Y-%m-%d')
  50. # Radio Box类型,单选框,choices里的内容会在ul标签里,里面每个项是(值,显示名)对
  51. gender = RadioField('Gender', choices=[('m', 'Male'), ('f', 'Female')],validators=[DataRequired()])
  52. # Select类型,下拉单选框,choices里的内容会在Option里,里面每个项是(值,显示名)对
  53. job = SelectField('Job', choices=[
  54. ('teacher', 'Teacher'),
  55. ('doctor', 'Doctor'),
  56. ('engineer', 'Engineer'),
  57. ('lawyer', 'Lawyer')
  58. ])
  59.  
  60. # Select类型,多选框,choices里的内容会在Option里,里面每个项是(值,显示名)对
  61. hobby = SelectMultipleField('Hobby', choices=[
  62. ('swim', 'Swimming'),
  63. ('skate', 'Skating'),
  64. ('hike', 'Hiking')
  65. ])
  66. # Text Area类型,段落输入框
  67. description = TextAreaField('Introduction of yourself')
  68. # Checkbox类型,加上default='checked'即默认是选上的
  69. accept_terms = BooleanField('I accept the Terms of Use', default='checked',
  70. validators=[DataRequired()])
  71. # Submit按钮
  72. submit = SubmitField('Register')
  73. ###控制器
  74. @app.route('/test/news_form', methods=['GET','POST'])
  75. def NewsFormViews():
  76. form = NewsForm()
  77. if flask.request.method == "GET":
  78. return render_template('news_form.html',form=form)
  79. else:
  80. #print form.image.data
  81. if form.validate_on_submit():
  82. if form.id.data:
  83. print form.id.data
  84. if form.image.data:
  85. filename = form.image.data.filename
  86. form.image.data.save(path.join(d,filename))
  87. return redirect('/test/news_form')
  88. else:
  89. print form.errors
  90. ###把错误信息返回到页面
  91. return render_template('news_form.html',form=form,error=form.errors)
  92.  
  93. if __name__ == '__main__':
  94. app.run(host='127.0.0.1',port='', debug=False)

flask表单标签的更多相关文章

  1. flask表单,orm,csrf

    flask表单是flask中最基本的功能. 它是负责HTML页面中数据采集的部分,它由三部分组成:表单标签,表单域,表单按钮组成,通过表单用户输入的数据提交给服务器. flask表单封装了WTForm ...

  2. SpringMVC 表单标签 & 处理静态资源

    使用 Spring 的表单标签 通过 SpringMVC 的表单标签可以实现将模型数据中的属性和 HTML 表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显. form 标签 一般情况下,通过 ...

  3. SpringMVC学习系列(11) 之 表单标签

    本篇我们来学习Spring MVC表单标签的使用,借助于Spring MVC提供的表单标签可以让我们在视图上展示WebModel中的数据更加轻松. 一.首先我们先做一个简单了例子来对Spring MV ...

  4. (转载)SPRINGMVC表单标签简介

    SpringMVC表单标签简介 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍Spri ...

  5. 第五节:表单标签的用法——value绑定和修饰符

    1.表单标签的用法--value绑定和修饰符 value绑定的写法:v-bind:value 或者简写 :value 修饰符: lazy , Number , trim . 用法如:  v-model ...

  6. 第四节:Vue表单标签和组件的基本用法,父子组件间的通信

    vue表单标签和组件的基本用法,父子组件间的通信,直接看例子吧. <!DOCTYPE html> <html> <head> <meta charset=&q ...

  7. SpringMVC 表单标签

    引入标签库 <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" ...

  8. SpringMVC表单标签简介

    在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍SpringMVC的表单标签之前,我们需 ...

  9. struts2:非表单标签

    非表单标签主要用于输出在Action中封装的信息,这在实际运用中是很常见的. 1. actionerror标签 <s:actionerror>标签主要用于输出错误信息到客户端,该标签将Ac ...

随机推荐

  1. golang interface判断为空nil

    要判断interface 空的问题,首先看下其底层实现. interface 底层结构 根据 interface 是否包含有 method,底层实现上用两种 struct 来表示:iface 和 ef ...

  2. Go 并发控制--WaitGroup的使用

    开发过程中,经常task之间的同步问题.例如,多个子task并发完成一部分任务,主task等待他们最后结束. 在Go语言,实现同步的一种方式就是WaitGroup. Example package m ...

  3. MyBatis中的@Mapper注解及配套注解使用详解(上)

    前言: 从mybatis3.4.0开始加入了@Mapper注解,目的就是为了不再写mapper映射文件(那个xml写的是真的蛋疼...).很恶心的一个事实是源码中并没有对于这个注解的详细解释 现在我们 ...

  4. Windows Azure Virtual Network (12) 虚拟网络之间点对点连接VNet Peering

    <Windows Azure Platform 系列文章目录> 在有些时候,我们需要通过VNet Peering,把两个虚拟网络通过内网互通互联.比如: 1.在订阅A里的Virtual N ...

  5. 让WebBrowser在非兼容模式下运行

    32 bit: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_ ...

  6. [Android] 配置build.gradle 动态传参

    (1)一个Android工程中有一个build.gradle是负责Project范围的,而Module中又有各自的build.gradle是专门负责模块的. (2)在Gradle中Task是一等公民, ...

  7. [蓝桥杯]ALGO-49.算法训练_寻找数组中最大值

    题目描述: 问题描述 对于给定整数数组a[],寻找其中最大值,并返回下标. 输入格式 整数数组a[],数组元素个数小于1等于100.输出数据分作两行:第一行只有一个数,表示数组元素个数:第二行为数组的 ...

  8. STL进阶--狡猾的反向迭代器

    反向迭代器 两种声明反向迭代器的方法 reverse_iterator<vector<int>::iterator> ritr; vector<int>::reve ...

  9. 【Mysql】事务日志-Write Ahead logging vs command-logging(转)

    原理讲解: Write Ahead logging vs command logging Write Ahead logging 持久化数据保存在磁盘,数据的存储是随机的,并非顺序: 内存中保存磁盘数 ...

  10. php的语法

    常量:不变的量: php 设置常量的方法:define()方法: define("常量名","常量的值",true) 参数三:大小写是否敏感: php中的常量, ...