Python Flask学习_POST/重定向/GET模式

问题:刷新浏览器页面时,浏览器会重新发送之前发送的最后一个请求。如果这个请求是包含表单数据的POST请求,刷新页面后会再次提交表单。浏览器会发出警告:要求在再次提交前确认。

因此,最好别让Web程序把POST请求作为浏览器发送的最后一个请求。

解决方法是:使用重定向作为刷新产生的POST请求的响应。重定向响应是一种响应URL(而不是HTML代码)的特殊响应,浏览器收到相应的URL,会向重定向的URL发起GET请求。

流程示意图:

客户端(浏览器)--------(POST请求)---------------->服务器

客户端(浏览器)<-------------(URL)----------------服务器

客户端(浏览器)--------(GET请求URL)-------------->服务器

例子:

# test.py

from flask import Flask, render_template, session, redirect, url_for

@app.route("/",methods=['GET','POST'])
def index():
    form = NameForm()
    if form.validate_on_submit():                                #表单数据提交合法时,True
        session['name'] = form.name.data                         #使用了用户会话session用来保存POST请求中的name
        return redirect(url_for('index'))                        #重定向(浏览器会向URL发起GET请求)
    return render_template('index.html',name=session.get('name'),form=form)      #重定向后返回的模板(session['name']是上一次执行此函数保留的




扫描二维码关注公众号,回复: 1800490 查看本文章



猜你喜欢

转载自blog.csdn.net/bird333/article/details/80726526