flask中web表单应用

web表单:
制作简易表单有几个步骤:
1, 跨站请求伪造保护
2, 表单类
3, 在视图函数中处理表单
4, 在html文件中处理表单
5, 关于重定向和用户会话

—- – – ———分割线之具体步骤
0,先安装
pip install flask-wtf

1, 老规矩,先在hello.py中修改代码,Cross-Site Request Forgery ,flask-wtf能保护所有表单免CSRF攻击,所以必须写密钥,代码:

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

本应在配置文件中,此处暂时用字符串替代
2, 继续在hello.py ,建立表单类,继承自Form 类,附录中有WTForms支持的HTML标准字段以及验证函数,代码:

from flask.ext.wtf import Form
from wtforms import StringField,SubmitField
from  wtforms.validators  import Required
class NameForm(Form):
    name=StringField('What is your name ?',validators=[Required()])
submit =SubmitField('submit')

3, 继续hello.py,视图函数处理表单:

@app.route('/',methods=['GET','POST'])
def index():
    name=None
    myform = NameForm()
    if myform.validate_on_submit():
        name = myform.name.data
        myform.name.data=''
return render_template('formindex.html',form=myform,name=name)

两点:validate_on_submit()方法:如果数据能被所有验证函数接受,比如调用name字段附属的验证函数Required(),那么validate_on_submit()方法的返回值为True,否则False.
第二点,访问表单里的值:form..data
4, 开始在index.html文件中,渲染表单比较快速高效的方法利用Bootstrap 渲染Flask-WTF表单对象的辅助函数,wtf.quick_form()函数的参数为Flask-WTF表单对象:

{% extends 'base.html' %}
{% import 'bootstrap/wtf.html' as wtf %}

{% block  title %} Flasky {% endblock %}

{% block page_content %}
<div class="page-header">
    <h1>Hello,{% if name %}
    {{ name }}
    {% else %}
    Stranger
    {% endif %}!</h1>
</div>

{{ wtf.quick_form(form) }}
{% endblock %}

5, 上效果图:这里写图片描述

6, 重定向和用户会话,
Question:
提交表单后再刷新,会看到浏览器警告,要求在再次提交表单之前进行确认,而大多数使用浏览器上网的用户不都是懂计算机技术,用户对浏览器的警告不太理解,肯定用户体验就不太好了,所以要避免这种弹出的警告窗。
AC:
首先为什么会有这种情况,因为刷新会让浏览器重新发送之前已经发送过的最后一个请求,而若这个请求为POST,则刷新后重新提交表单,就警告了。解决思路:使用重定向作为POST的响应,重定向的响应内容为URL,而URL会发送GET请求,解决弹窗警告。这种方法带来另一个问题,因为POST使用重定向处理,一旦请求结束,数据就丢失,所以得用session来保存数据。

@app.route('/',methods=['GET','POST'])
def index():
    name=None
    myform = NameForm()
    if myform.validate_on_submit():
        session['name']= myform.name.data
        return redirect(url_for('index'))
    return render_template('formindex.html',form=myform,name=session.get('name'))

附录:
WTForms支持的HTML标准字段
这里写图片描述

WTForms 的验证函数
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值