Flask入门之flask-wtf表单处理
参考文章
第11集
#Sample.py
# coding:utf-8
from flask import Flask,render_template,request
from flask_bootstrap import Bootstrap app = Flask(__name__)
Bootstrap(app) app.config.from_pyfile('config') #新建一个config的配置文件 @app.route('/login',methods=['POST','GET'])
def login():
from forms import LoginForm
form = LoginForm()
return render_template('login.html',title=u'登录',form=form) if __name__ == '__main__':
app.run(debug=True)
#login.html
{% extends 'home.html' %}
{% block content %}
<div class="page-header">
<div class="container">
<h1>{{ title }}</h1>
</div>
</div>
<div class="container">
<form method="POST">
{{ form.username.label }}
{{ form.username() }}
{{ form.password.label }}
{{ form.password() }}
{{ form.submit() }}
</form>
</div>
{% endblock %}
#forms.py
#coding:utf-8
from flask.ext.wtf import Form
from wtforms import StringField,PasswordField,SubmitField
from wtforms.validators import DataRequired
class LoginForm(Form):
username = StringField(label=u'用户名',validators=[DataRequired()])
password = PasswordField(label=u'密码',validators=[DataRequired()])
submit = SubmitField(label=u'提交')
#homt.html
{% extends 'bootstrap/base.html' %}
{% import '_macro.html' as ui %}
{% block title %}{{ title }}{% endblock %}
{% block head %}
{{ super() }}
{% include 'includes/_head.html' %}
{% endblock %}
{% block styles %}
{{ super() }}
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/darkly/bootstrap.min.css">
{% endblock %}
#config
防止CSRF
SECRET_KEY='hard to guess string'
效果如图

这里我们可能会觉得这个表单设计的很丑
前面我们学了,引用bootstrap样式,所以也可以将这个表单直接引用,方便快捷
只要改动#login.html的代码(红色代码)
{% extends 'home.html' %}
{% import 'bootstrap/wtf.html' as wtf %}
{% block content %}
<div class="page-header">
<div class="container">
<h1>{{ title }}</h1>
</div>
</div>
<div class="container">
<form method="POST">
{{ wtf.quick_form(form) }}
</form>
</div>
{% endblock %}
效果好了很多

如果我们想在登录后,提示一下‘登录成功’的信息条,怎么设置呢,这里要从flask导入flash(添加到上面代码)
from flask import flash
然后再视图函数下填写(红色代码)
@app.route('/login',methods=['POST','GET'])
def login():
from forms import LoginForm
form = LoginForm()
flash(u'登陆成功')
return render_template('login.html',title=u'登录',form=form)
最后在#login.html中增加代码(红色代码)
{% extends 'home.html' %}
{% import 'bootstrap/wtf.html' as wtf %}
{% block content %}
<div class="page-header">
<div class="container">
<h1>{{ title }}</h1>
</div>
</div>
<div class="container">
{% for message in get_flashed_messages() %}
<div class="alert-info">{{ message }}</div>
{% endfor %}
<form method="POST">
{{ wtf.quick_form(form) }}
</form>
</div>
{% endblock %}
最后效果如图


Flask入门之flask-wtf表单处理的更多相关文章
- 【Flask】 python学习第一章 - 6.0 WTF表单 数据库 蓝图
WTF表单 wtf.py pip install flask-wtf # 安装 from flask_wtf import FlaskForm from wtform import StringF ...
- Flask开发系列之Web表单
Flask开发系列之Web表单 简单示例 from flask import Flask, request, render_template app = Flask(__name__) @app.ro ...
- WTF表单验证
WTF表单验证可分为3个步骤: ①导入wtf扩展提供的表单验证器.(from wtforms.validators import DataRequired,EqualTo) ②定义表单类 # 定义表单 ...
- Bootstrap入门(五)表单
Bootstrap入门(五)表单 先引入本地的CSS文件 <link href="css/bootstrap.min.css" rel="stylesheet ...
- flask 在模板中渲染表单
在模板中渲染表单 为了能够在模板中渲染表单,我们需要把表单类实例传入模板.首先在视图函数里实例化表单类LoginForm,然后再render_template()函数中使用关键脑子参数form将表单实 ...
- flask插件系列之Flask-WTF表单
flask_wtf是flask框架的表单验证模块,可以很方便生成表单,也可以当做json数据交互的验证工具,支持热插拔. 安装 pip install Flask-WTF Flask-WTF其实是对w ...
- [Flask]通过render_form快捷渲染表单
依赖: Bootstrap-Flask 实例化方式与flask_bootstrap相同. 关于render_form(): Bootstrap-Flask内置了两个用于渲染WTForms表单类的宏,r ...
- 【flask】使用Flask-WTF处理表单
我的理解是Flask-WTF与html文件的关系就如同SQLAlchemy与数据库之间的关系. 通过python Form类,生成html代码,并在html模板文件中通过{{}}变量的方式引用这些生 ...
- flask 单个页面多个表单(单视图处理、多视图处理)
单个页面多个表单 除了在单个表单上实现多个提交按钮,有时还需要在单个页面上创建多个表单.比如,在程序的主页上同时添加登录和注册表单.当在同一个页面上添加多个表单时,我们需要解决的问题是在视图函数中判断 ...
- flask实战-个人博客-表单
表单 下面我们来编写所有表单类,personalBlog中主要包含下面这些表单: 登录表单: 文章表单: 评论表单: 博客设置表单: 这里仅介绍登录表单.文章表单.分类表单和评论表单,其他的表单在实现 ...
随机推荐
- 推荐一个优秀的c++源代码,TinyXml2
项目主页:http://grinninglizard.com/tinyxml2docs/index.html tinyxml2.h /* Original code by Lee Thomason ( ...
- spring揭秘 读书笔记 六 bean的一生
我们知道,Spring容器具有对象的BeanDefinition来保存该对象实例化时需要的数据. 对象通过container.getBean()方法是才会初始化该对象. BeanFactory 我们知 ...
- Leetcode_107_Binary Tree Level Order Traversal II
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41964067 Given a binary tree, r ...
- rpcz VC2010 构建
rpcz VC2010 构建 rpcz 是应用ZeroMQ和Protobuf开发的RPC. 见: https://github.com/reinferio/rpcz 及 https://code.go ...
- HTML的TextArea中保存格式的问题
textarea在保存时格式是可以保存到数据库的,但是展示时因为/n和 不能互转导致页面不能按照刚开始的时候的格式展示,所以在页面展示的时候,要在值的外面嵌套一层 标签,即 < pre > ...
- Bootstrap 简介: 创建响应式、移动项目的工具
原文链接: Introduction to Bootstrap: A Tool for Building Responsive, Mobile-First Projects 下载: 示例代码Boots ...
- 【Qt编程】Qt学习之状态栏
QStatusBar类提供一个水平条来显示状态信息.所谓状态信息,拿个简单的例子来说,当你在word中编辑时,左下角就会出现页面.字数等等信息.状态信息可以分为三类:临时信息,如一般的提示信息:正常信 ...
- 【一天一道LeetCode】#5 Longest Palindromic Substring
一天一道LeetCode系列 (一)题目 Given a string S, find the longest palindromic substring in S. You may assume t ...
- Linux备份策略(第二版)
备份策略 备份思想 一.系统潜在的威胁 Ø 系统硬件故障 Ø 软件故障 Ø 电源故障 Ø 用户的误操作 Ø 人为破坏 Ø 缓存中的内容没有及时的写入磁盘 Ø 自然灾害 二.备份介质的选择 备份介质:硬 ...
- ERP-非财务人员的财务培训教(一.一)------基本会计知识
一.基本会计知识 第一节 会计是企业的语言 反映企业经济状况的两组会计语言词汇 四个层次的会计语言规则 财务会计报告的组成 会计语言要素 会计工作主要是把企业杂乱的会计数据归纳整理,加工编制成有用的财 ...