1、request.from获取POST表单数据

# hello.py

 #coding:utf-8

 from flask import Flask,request,render_template

 app = Flask(__name__)

 @app.route('/',methods=['GET']) #methods是一个列表
def home():
return render_template('home.html') @app.route('/signin',methods=['GET'])
def signin_form():
return render_template('form.html') @app.route('/signin',methods=['POST'])
def signin():
username = request.form['username']
password = request.form['password']
if username == 'admin' and password == 'password':
return render_template('signin-ok.html',username=username)
else:
return render_template('form.html',message='用户名或者密码错误,请重新登陆>>',username=username) if __name__ == '__main__':
app.run()

# form.html

 <!DOCTYPE html>
<html>
<meta charset="utf-8">
<head>
<title>登陆界面</title>
</head>
<body>
{% if message %}
<p style="color:red">{{ message }}</p>
{% endif %}
<form action='/signin' method="post">
<legend>请登陆您的账号:</legend>
<input type="text" name="username" placeholder='Username' value="{{ username }}"><br>
<input type="password" name="password" placeholder="Password" value="{{ password }}"><br>
<button type="submit">登陆</button>
</form>
</body>
</html>

# home.html

 <!DOCTYPE html>
<html>
<meta charset="utf-8">
<head>
<title>主页</title>
</head>
<body>
<h1>你好,欢迎来到首页</h1>
<p><a href="/signin">点击登陆</a></p>
</body>
</html>

#signin-ok.html

 <!DOCTYPE html>
<html>
<meta charset="utf-8">
<head>
<title>登陆成功</title>
</head>
<body>
<h1>欢迎你,{{ username }}</h1>
</body>
</html>

2、使用Flask-WTF扩展

# hello.py

 #coding:utf-8

 from flask import Flask,render_template
from flask.ext.bootstrap import Bootstrap
from flask.ext.wtf import Form
from wtforms import StringField,SubmitField
from wtforms.validators import Required app = Flask(__name__)
app.config['SECRET_KEY']='hard to guess string'
bootstrap = Bootstrap(app) class NameForm(Form):
name = StringField('what is your name?',validators=[Required()])
submit = SubmitField('Submit') @app.route('/',methods=['GET','POST'])
def index():
name = None
form = NameForm()
if form.validate_on_submit():
name = form.name.data #没有这一步,submit后name=None
form.name.data = '' #没有这一步,submit后文字框还会遗留上一次输入的文字
return render_template('index.html',form=form,name=name) if __name__ == '__main__':
app.run()

# index.py

 {% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %} {% block title %}Flasky{% endblock %} {% block page_content %}
<div class="page-header">
<h1>Hello, {% if name %}{{ name }}{% else %}Stranger{% endif %}!</h1>
</div>
<!-- 导入wtf.html渲染整个Flsk-WTF表单,参数form是hello.py中传过来的form实例-->
{{ wtf.quick_form(form) }}
{% endblock %}

附:共同的基模板

# base.html

 {% extends "bootstrap/base.html" %}
{% block title %}Flasky{% endblock %} {% block navbar %}
<div class="navbar navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">Flasky</a> </div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li><a href="/">Home</a></li>
<li><a href="/">Twitter</a></li>
<li><a href="/">Blog</a></li>
</ul>
</div>
</div>
</div>
{% endblock %} {% block content %}
<div class="container">
<div class="page-header">
{% block page_content %}{% endblock %}
</div>
</div> {% endblock %}

Flask表单(Flask-WTF)的更多相关文章

  1. flask表单,orm,csrf

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

  2. Flask从入门到精通之Flask表单渲染成HTML

    表单字段是可调用的,在模板中调用后会渲染成HTML.假设视图函数把一个NameForm 实例通过参数form 传入模板,在模板中可以生成一个简单的表单,如下所示: <form method=&q ...

  3. Flask从入门到精通之Flask表单

    Flask请求对象包含客户端发出的所有请求信息.其中,request.form 能获取POST 请求中提交的表单数据.尽管Flask 的请求对象提供的信息足够用于处理Web 表单,但有些任务很单调,而 ...

  4. flask表单提交的两种方式

    一.通用方式 通用方式就是使用ajax或者$.post来提交. 前端html <form method="post" action="/mockservice&qu ...

  5. Flask表单(form)的应用

    导入模块request模块 #指定请求方式,使用methods属性 @app.route("/",methods=['GET','POST']) def index(): #判断c ...

  6. flask 表单

    表单 在Web程序中,表单时和用户交互最常见的方式之一.用户注册.登录.撰写文章.编辑设置,无一不用到表单.不过,表单的处理不简单.要创建表单,验证用户输入的内容,向用户显示错误提示,还要获取并保存数 ...

  7. flask表单标签

    环境:python2.7+flask+flask_wtf 内容:flask的部分常用表单标签 test.py # -*- coding: utf-8 -*- # flask web_form 表单控件 ...

  8. flask表单flask-wtf

    一.安装pip install flask-wtf 二.创建一个flask的项目引入相对应的包 from flask import Flask,render_template import flask ...

  9. Flask表单验证

    学习内容:①判断请求方式(request.method) from flask import Flask,render_template,request app = Flask(__name__) @ ...

随机推荐

  1. Leetcode_13_Roman to Integer

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41486885 通过本文你可能学到的知识如下: (1)理解本 ...

  2. java,http的post和get

    使用Java发送GET.POST请求 --节选自<疯狂Java讲义>    URL的openConnection()方法将返回一个URLConnection对象,该对象表示应用程序和 UR ...

  3. (NO.00002)iOS游戏精灵战争雏形(五)

    完成了精灵自己移动之后,我们开始着手实现按住精灵拖动的功能. 要想处理触摸事件,我们需要做2件事: 1.在类的初始化中打开触摸接收属性 2.实现触摸处理回调方法 我们依次来做这2件事. 首先要搞清楚在 ...

  4. Aliyun上Linux服务器挂载数据盘及速度测试

    原始文档来自于阿里云官方文档:  Linux 系统挂载数据盘 铁锚 于 2013年12月19日 根据自己的需要进行整理 操作系统: CentOS 6.3, 平台  : 阿里云 ECS 云服务器 1. ...

  5. Cocos2D v2.0至v3.x简洁转换指南(二)

    触摸处理 我们在稍后将完成Cocos2d 3.0中触摸处理的完整教程.而现在最重要的是知道如何去启用触摸处理在你的CCNode中: self.userInteractionEnabled = TRUE ...

  6. Adobe Premiere 基本使用

    第一节   Premiere概述 1.1概述 Premiere是Adobe公司出品的一款用于进行影视后期编辑的软件,是数字视频领域普及程度最高的编辑软件之一.对于学生媒体而言,Premiere完全可以 ...

  7. Google性能工程师Ilya Grigorik谈HTTP/2

    via:http://www.infoq.com/cn/news/2014/11/http2-develop HTTP/2,也就是超文本传输协议第2版,是下一代HTTP协议.该版本是自1999年HTM ...

  8. 第十一章 图像之2D(2)

    Android游戏开发群:290051794 Libgdx游戏开发框架交流群:261954621 作者:宋志辉  出处:http://blog.csdn.net/song19891121 本文版权归作 ...

  9. windows linux—unix 跨平台通信集成控制系统----文件搜索

    跨平台的网络通信,跟设备的集成控制,牵扯到在各种平台下的文件搜索问题,windows下面的已经有了. 地址如下: http://blog.csdn.net/wangyaninglm/article/d ...

  10. OpenGL Shader Key Points (3)

    Shader和Program Program Link过后,Shader就可以从Program中Detach并删掉.这样是不是可以节省一点点显存呢? 链接到同一个program的vertex和frag ...