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

# hello.py

  1. #coding:utf-8
  2.  
  3. from flask import Flask,request,render_template
  4.  
  5. app = Flask(__name__)
  6.  
  7. @app.route('/',methods=['GET']) #methods是一个列表
  8. def home():
  9. return render_template('home.html')
  10.  
  11. @app.route('/signin',methods=['GET'])
  12. def signin_form():
  13. return render_template('form.html')
  14.  
  15. @app.route('/signin',methods=['POST'])
  16. def signin():
  17. username = request.form['username']
  18. password = request.form['password']
  19. if username == 'admin' and password == 'password':
  20. return render_template('signin-ok.html',username=username)
  21. else:
  22. return render_template('form.html',message='用户名或者密码错误,请重新登陆>>',username=username)
  23.  
  24. if __name__ == '__main__':
  25. app.run()

# form.html

  1. <!DOCTYPE html>
  2. <html>
  3. <meta charset="utf-8">
  4. <head>
  5. <title>登陆界面</title>
  6. </head>
  7. <body>
  8. {% if message %}
  9. <p style="color:red">{{ message }}</p>
  10. {% endif %}
  11. <form action='/signin' method="post">
  12. <legend>请登陆您的账号:</legend>
  13. <input type="text" name="username" placeholder='Username' value="{{ username }}"><br>
  14. <input type="password" name="password" placeholder="Password" value="{{ password }}"><br>
  15. <button type="submit">登陆</button>
  16. </form>
  17. </body>
  18. </html>

# home.html

  1. <!DOCTYPE html>
  2. <html>
  3. <meta charset="utf-8">
  4. <head>
  5. <title>主页</title>
  6. </head>
  7. <body>
  8. <h1>你好,欢迎来到首页</h1>
  9. <p><a href="/signin">点击登陆</a></p>
  10. </body>
  11. </html>

#signin-ok.html

  1. <!DOCTYPE html>
  2. <html>
  3. <meta charset="utf-8">
  4. <head>
  5. <title>登陆成功</title>
  6. </head>
  7. <body>
  8. <h1>欢迎你,{{ username }}</h1>
  9. </body>
  10. </html>

2、使用Flask-WTF扩展

# hello.py

  1. #coding:utf-8
  2.  
  3. from flask import Flask,render_template
  4. from flask.ext.bootstrap import Bootstrap
  5. from flask.ext.wtf import Form
  6. from wtforms import StringField,SubmitField
  7. from wtforms.validators import Required
  8.  
  9. app = Flask(__name__)
  10. app.config['SECRET_KEY']='hard to guess string'
  11. bootstrap = Bootstrap(app)
  12.  
  13. class NameForm(Form):
  14. name = StringField('what is your name?',validators=[Required()])
  15. submit = SubmitField('Submit')
  16.  
  17. @app.route('/',methods=['GET','POST'])
  18. def index():
  19. name = None
  20. form = NameForm()
  21. if form.validate_on_submit():
  22. name = form.name.data #没有这一步,submit后name=None
  23. form.name.data = '' #没有这一步,submit后文字框还会遗留上一次输入的文字
  24. return render_template('index.html',form=form,name=name)
  25.  
  26. if __name__ == '__main__':
  27. app.run()

# index.py

  1. {% extends "base.html" %}
  2. {% import "bootstrap/wtf.html" as wtf %}
  3.  
  4. {% block title %}Flasky{% endblock %}
  5.  
  6. {% block page_content %}
  7. <div class="page-header">
  8. <h1>Hello, {% if name %}{{ name }}{% else %}Stranger{% endif %}!</h1>
  9. </div>
  10. <!-- 导入wtf.html渲染整个Flsk-WTF表单,参数formhello.py中传过来的form实例-->
  11. {{ wtf.quick_form(form) }}
  12. {% endblock %}

附:共同的基模板

# base.html

  1. {% extends "bootstrap/base.html" %}
  2. {% block title %}Flasky{% endblock %}
  3.  
  4. {% block navbar %}
  5. <div class="navbar navbar-inverse" role="navigation">
  6. <div class="container">
  7. <div class="navbar-header">
  8. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
  9. <span class="sr-only">Toggle navigation</span>
  10. <span class="icon-bar"></span>
  11. <span class="icon-bar"></span>
  12. <span class="icon-bar"></span>
  13. </button>
  14. <a class="navbar-brand" href="/">Flasky</a>
  15.  
  16. </div>
  17. <div class="navbar-collapse collapse">
  18. <ul class="nav navbar-nav">
  19. <li><a href="/">Home</a></li>
  20. <li><a href="/">Twitter</a></li>
  21. <li><a href="/">Blog</a></li>
  22. </ul>
  23. </div>
  24. </div>
  25. </div>
  26. {% endblock %}
  27.  
  28. {% block content %}
  29. <div class="container">
  30. <div class="page-header">
  31. {% block page_content %}{% endblock %}
  32. </div>
  33. </div>
  34.  
  35. {% 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. Android 纵向跑马灯滚动效果

    像淘宝和京东都会有跑马灯的效果,今天给大家贡献下以前项目的一个demo,各位看官,且看效果图. 我们先定义一个Bean文件,这个实体类文件主要包含标题,内容描述,以及还有跳转的链接. LampBean ...

  2. rambbit mq 安装

    https://blog.csdn.net/lmjy102/article/details/78571078 http://www.rabbitmq.com/tutorials/tutorial-on ...

  3. 手把手带你做一个超炫酷loading成功动画view Android自定义view

    写在前面: 本篇可能是手把手自定义view系列最后一篇了,实际上我也是一周前才开始真正接触自定义view,通过这一周的练习,基本上已经熟练自定义view,能够应对一般的view需要,那么就以本篇来结尾 ...

  4. Android开源项目——带图标文字的底部导航栏IconTabPageIndicator

    接下来的博客计划是,在<Android官方技术文档翻译>之间会发一些Android开源项目的介绍,直接剩下的几篇Android技术文档发完,然后就是Android开源项目和Gradle翻译 ...

  5. SpartanBrowser产品和安全特性简介

    v:* { } o:* { } w:* { } .shape { }p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-botto ...

  6. Linux下top命令详解

    Linux下top命令详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不断刷 ...

  7. SpriteBuilder中的CCSprite9Slice是个什么鬼?

    CCSprite大家都知道,但是加上后面那一串又变成了神马呢? 我们可以首先到官方的API文档网站查一下,如下: http://www.cocos2d-swift.org/docs/api/Class ...

  8. LeetCode之“数学”:Plus One

    题目链接 题目要求: Given a non-negative number represented as an array of digits, plus one to the number. Th ...

  9. MTK 快速开机 技术详解

    Android version 2.3.5 首先查看Settings里控制开关 01 // 获取当前状态 02 boolean ipoSettingEnabled = Settings.System. ...

  10. javascript、ruby和C性能一瞥(3) :上汇编

    在博文(1)和(2)里分别用了4中方式写一个素数筛选的算法,分别是javascript in browser.node.js.ruby和c:最终的结果是c最快,node.js其次,js in b虽然也 ...