本文共 1637 字,大约阅读时间需要 5 分钟。
——————————————————————前言————————————————————————————
本节我们讲解flask-wtf扩展, 它可以把处理web表单的过程变成一种愉悦的体验。
————————————————————————————————————————————————————
app.config['SECRET_KEY'] = 'hard to guess string'
flask-wtf扩展能保护所有表单免受跨站请求伪造的攻击, 需要程序设置一个密钥, 保存在app.config字典里面。
(*注意先激活虚拟环境,然后再安装扩展)
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) #返回响应
{% 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 %}Hello, {% if name %} { { name }} {% else %}Stranger{% endif %}
#if逻辑结构
#我们除了继承base.html模板外, 还导入了wtf.html模板, 里面有quick_form函数用来渲染我们的表单
输入地址:
在文本框中输入Dave然后点击提交按钮:
之后我们回看终端, 发现最后三个命令分别是GET-POST-GET, 是因为我们在视图函数中使用了重定向。