Flask学习笔记 第四章WEB表单

参考书目为《Flask Web 开发》
github仓库点这里

4.5 重定向和用户会话

知识点

  • 重定向 使用重定向作为post请求的响应,而不是常规响应。

为什么使用重定向?

* 输入name之后在刷新界面提示一个警告,重复此前的操作。
* 前一个请求包含表单数据的post请求(name),刷新页面会重新提交单
* web应用的最后一个请求最好别是post请求
* 重定向会发送GET请求

可能引起的问题?

* post请求数据的保存,post请求结束后,数据会消失。
* web应用需要保存输入的名字

解决办法?

* 数据存储在 ::**用户会话**::  中。

API使用

* redirect() 生成HTTP重定向响应, 参数是重定向的URL。
* url_for() URL生成函数,参数是端点名, 端点是视图函数的名称
@app.route(‘/‘, methods=[‘GET’, ‘POST’])
def index():
    name = None
    form = NameForm()
    if form.validate_on_submit():
        sessions[‘name’] = form.name.data
        # name = form.name.data
        # form.name.data = ‘’
        return redirect(url_for(‘index’))
    return render_template(‘index.html’, form=form, name=name)
  • post/get 两种http请求,post 存在request body, get传url。本质都是TCP链接。

4.6闪现消息

  • 用户请求发生了变化,web页面作出响应的提醒。你是张三现在你变成了李四,要发出提醒,不要串戏。

知识点

* flash()配合模板渲染警告消息
* 模板修改 CSS alert样式渲染警告消息
@app.route('/', methods=['GET', 'POST'])
def index():
    # name = None
    form = NameForm()

    if form.validate_on_submit():
        old_name = session.get('name')
        if old_name is not None and old_name != form.name.data:
            flash('你他喵的又改名字了!')
        session['name'] = form.name.data
        # name = form.name.data
        # form.name.data = ''
        return redirect(url_for('index'))
    return render_template('index.html', form=form, name=session.get('name'))
{% block content %}
<div class="container">
    {% for message in get_flashed_messages() %}
    <div class="alert alert-warning">
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        {{ message }}
    </div>
    {% endfor %}
    {% block page_content %}{% endblock %}
</div>
{% endblock %}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值