博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4.1 web表单
阅读量:4095 次
发布时间:2019-05-25

本文共 1637 字,大约阅读时间需要 5 分钟。

——————————————————————前言————————————————————————————

本节我们讲解flask-wtf扩展, 它可以把处理web表单的过程变成一种愉悦的体验。

————————————————————————————————————————————————————

一. 设置flask-wtf

app.config['SECRET_KEY'] = 'hard to guess string'

flask-wtf扩展能保护所有表单免受跨站请求伪造的攻击, 需要程序设置一个密钥, 保存在app.config字典里面。

二. 安装扩展

(*注意先激活虚拟环境,然后再安装扩展)

三. 修改hello.py

from flask_wtf import FlaskFormfrom wtforms import StringField, SubmitFIeldfrom wtforms.validators import DataRequiredfrom flask import render_template, Flask, session, redirect, url_for#设置flask-wtfapp = Flask(__name__)app.config['SECRET_KEY'] = 'hard to guess string'#表单类class NameForm(FlaskForm):    name = StringField('What is your name?', validators=[DataRequired()])  #文本框字段    submit = SubmitField('submit')  #提交按钮字段#视图函数@app.route('/', methods=['GET', 'POST'])def index():    name = None    form = NameForm()  #get请求生成空表单, post请求生成含有数据的表单    if form.validate_on_submit():  #只有是post请求并且字段验证函数通过才为True        session['name'] = form.name.data  #把文本框中的输入保存在会话字典中        return redirect(url_for('index'))  #重定向, 作用是使浏览器向index重新发送get请求    return render_template('index.html', name=session.get('name'), form=form)  #返回响应

四.修改index.html

{% extends 'base.html' %}  #继承base模板, 用现成的导航条, 网页名称等{% import 'bootstrap/wtf.html' as wtf %}  #导入wtf模板{% block title %}Flasky{% endblock %}  #修改网页名称{% block page_content %}  
{
{ wtf.quick_form(form) }} #使用wtf模板中的quick_form函数渲染表单{% endblock %}

#我们除了继承base.html模板外, 还导入了wtf.html模板, 里面有quick_form函数用来渲染我们的表单

五. 效果演示

输入地址:

在文本框中输入Dave然后点击提交按钮:

之后我们回看终端, 发现最后三个命令分别是GET-POST-GET, 是因为我们在视图函数中使用了重定向。

你可能感兴趣的文章
Express: Can’t set headers after they are sent.
查看>>
2017年,这一次我们不聊技术
查看>>
实现接口创建线程
查看>>
Java对象序列化与反序列化(1)
查看>>
HTML5的表单验证实例
查看>>
JavaScript入门笔记:全选功能的实现
查看>>
程序设计方法概述:从面相对象到面向功能到面向对象
查看>>
数据库事务
查看>>
JavaScript基础1:JavaScript 错误 - Throw、Try 和 Catch
查看>>
SQL基础总结——20150730
查看>>
SQL join
查看>>
JavaScript实现页面无刷新让时间走动
查看>>
CSS实例:Tab选项卡效果
查看>>
前端设计之特效表单
查看>>
前端设计之CSS布局:上中下三栏自适应高度CSS布局
查看>>
Java的时间操作玩法实例若干
查看>>
JavaScript:时间日期格式验证大全
查看>>
pinyin4j:拼音与汉字的转换实例
查看>>
XML工具代码:SAX从String字符串XML内获取指定节点或属性的值
查看>>
时间日期:获取两个日期相差几天
查看>>