【简说Python WEB】Form提交表单
系统环境:Ubuntu 18.04.1 LTS
Python使用的是虚拟环境:virutalenv
Python的版本:Python 3.6.9
【简说Python WEB】Form提交表单
B/S架构的核心,一个get数据,另外一个post数据。很多交互性的网站,都需要通过Form表单来向服务器提交数据。这里介绍,简单做一个From表单。感受一下post数据和与服务器端的交互。
安装flask-wtf
pip install flask-wtf
代码树
├── app.py
└── templates
├── 404.html
├── 500.html
├── base.html
└── index.html
app.py源码中表单类:
设置一个密钥,是防止表单遭到跨站请求伪造(CSRF).保证其安全。会生成一个令牌,加密签名的。
app.config['SECRET_KEY'] = 'wojiubugaosuni'
这里的
wojiubugaosuni不能明文写入配置文件,应该通过环境变量传入,保证安全性。
添加了一个FlaskForm表格。表格中有如下字段 :
- 一个
name的文本字段,其中StringField构造函数中的validators的参数,确保提交的字段不能为空。 - 一个名为
submit的按钮
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
class NameForm(FlaskForm):
name = StringField('你的名字叫什么', validators=[DataRequired()])
submit = SubmitField('Submit')
index.html的源码修改:渲染form表单
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
{% block title %}zsdblog{% endblock %}
{% block content %}
<div class="container">
<div class="page-header">
<h1>您好, {{ name }},欢迎来到我的博客!</h1>
</div>
</div>
{{ wtf.quick_form(form) }}
{% endblock %}
其中添加了{% import "bootstrap/wtf.html" as wtf %}和{{ wtf.quick_form(form) }}使用bootstrap来渲染form表单元素。
app.py源码中from表单处理
@app.route('/', methods=['GET', 'POST'])
def index():
name = '游客'
form = NameForm()
if form.validate_on_submit():
name = form.name.data
form.name.data = ''
return render_template('index.html', form=form, name=name)
效果演示:

输入小明之后的演示效果:

不输入任何字符,会触发StringField构造函数中的验证效果:

就会有请填写此字段的验证效果
会话和重定向
提交表单之后,按F5刷新浏览器,会报出一个警告。如下页面:

为了让数据保持,就保存在一个session之中。修改app.py代码如下 :
from flask import Flask, render_template,session,redirect,url_for
if form.validate_on_submit():
session['name'] = form.name.data
return redirect(url_for('index'))
return render_template('index.html', form=form, name=session.get('name'))
让代码自己重定向redirect(url_for('index'))
【简说Python WEB】Form提交表单的更多相关文章
- 解析:使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象. 这里记录一下如何解决的.其实这个现象不光是easyui的f ...
- Form提交表单页面不跳转
1.设计源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- 使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
之前开发时遇到的一个问题,使用easyui的form提交表单,在Chrome下时没问题的,但是在IE下出现类似附件下载时提示是否保存的现象. 这里记录一下如何解决的.其实这个现象不光是easyui的f ...
- 利用ajaxSubmit()方法实现Form提交表单后回调
1. 背景 最近在工作中,需要实现网页端图片上传到FTP服务器的功能.上传文件是用Form表单提交数据的方法向后台传输文件流,在此遇到了一个问题:后台在处理完图片上传功能后,需要向前台回传是 ...
- 回车禁止form提交表单
今天遇到回车自动提交表单特此记录下 document.getElementsByTagName('form')[0].onkeydown = function(e) { var e = e || ev ...
- python带cookie提交表单自动登录(转)
今天突然把博客给申请了,以前也想过的,奈于自己觉得水平还太低有点不好意思写博客,但是后来一想,自己的记录所学,加深印象,主要还是为了学习进步,不怕丢人!今天就稍微回顾一下这两天写的一段用python模 ...
- Form提交表单后页面刷新不跳转的实现
<form action="" id="" method="post" target="nm_iframe"> ...
- form提交表单没接收到$_POST
分享一个最近做项目遇到的奇葩经历: 很奇怪的,我在弄一个表单提交的时候,后台验证就报了非post提交错误 我就郁闷了,我form明明写的method为post,不可能是非post错误啊 经历反应测试, ...
- 表单提交学习笔记(一)—利用jquery.form提交表单(后台.net MVC)
起因:一开始想用MVC本身的Form提交方法,但是提交完之后想进行一些提示,MVC就稍显不足了,最后用jquery插件---jquery.form.js,完美解决了问题~~ 使用方法 一.下载jque ...
- 【JavaScript】Html form 提交表单方式
源:http://blog.csdn.net/wang02011/article/details/6299517 1.input[type='submit'] 2.input[type='image' ...
随机推荐
- KingbaseES 等待事件之 - Client ClientWrite
等待事件含义 Client:ClientWrite等待事件指数据库等待向客户端写入数据. 在正式业务系统中,客户端必然和数据库集群之间有数据交互,这里指的是数据接收,发送.数据库集群在向客户端发送更多 ...
- KingbaseES Json 系列九:Json路径查询函数
KingbaseES Json 系列九--Json路径查询函数(JSONB_PATH_EXISTS,JSONB_PATH_MATCH,JSONB_PATH_QUERY,JSONB_PATH_QUERY ...
- 20 JavaScript和HTML交互
20 JavaScript和HTML交互 在HTML中可以直接在标签上给出一些事件的触发. 例如, 页面上的一个按钮. <input type="button" value= ...
- #状压dp,拓扑排序,内向基环树#CF1242C Sum Balance
题目 有 \(k\) 个盒子, 第 \(i\) 个盒子有 \(n_i\) 个数. 保证所有数互不相同. 从每个盒子各拿出一个数, 并按照某种顺序放回去(每个盒子恰好放入一个数). 判断是否能使操作后所 ...
- #ST表,并查集#洛谷 3295 [SCOI2016]萌萌哒
题目 分析 可以发现除了最高位只能填 1 到 9,其它位置还可以填 0. 直接用并查集找连通块会超时,如果将这些区间的合并可以下传到子区间的合并那样就可以了. 考虑ST表的逆操作,合并时直接合并两个极 ...
- #欧拉函数#洛谷 2303 [SDOI2012] Longge 的问题
题目 求\(\sum_{i=1}^n\gcd(n,i)\) 分析 \(=\sum_{i=1}^n\sum_{d|gcd(n,i)}\varphi(d)\) \(=\sum_{d|n}\varphi(d ...
- Java 日期和时间 API:实用技巧与示例 - 轻松处理日期和时间
Java 用户输入(Scanner) 简介 Scanner 类用于获取用户输入,它位于 java.util 包中. 使用 Scanner 类 要使用 Scanner 类,请执行以下步骤: 导入 jav ...
- 全面指南:技术写作与编辑工具 Markdown、Git 研究工具
技术写作工具 在技术写作领域,"工具"是指技术写作者用于创建.管理和发布高质量技术文档的各种软件和应用程序.这包括文字处理器.桌面出版应用程序.XML 编辑器.内容管理系统等等.一 ...
- Linux系统 g++ 链接 libopencv_world.a 静态库编译程序
编译opencv,我是直接编译成 libopencv_world.a 一个文件 正常链接编译,容易报错:main: hidden symbol `opj_read_header' isn't def ...
- Mac系统,Qt工程转xcode工程,打包pkg
序言: 程序使用Qt开发,程序主要功能是调用摄像头.需要打包成pkg给到用户安装,打包用到的是xcode. 实际操作: 一.Qt工程转xcode工程 // 打开终端,cd到项目根目录(CamScan. ...