Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 重新定向时,Flask会话将清除_Python_Session_Flask_Redirect - Fatal编程技术网

Python 重新定向时,Flask会话将清除

Python 重新定向时,Flask会话将清除,python,session,flask,redirect,Python,Session,Flask,Redirect,每当我重定向时,我的flask会话就会清除。下面是Python代码。我正在尝试向会话添加一些购物车项目,然后能够向购物车添加更多项目。问题是,每当我这样做时:returnredirect(url\u for('buy')),就会触发一个获取请求,请求页面,当按下按钮时,发送post请求时,会话就会被清除 from flask import * from flask_pymongo import PyMongo from flask_bootstrap import Bootstrap app

每当我重定向时,我的flask会话就会清除。下面是Python代码。我正在尝试向会话添加一些购物车项目,然后能够向购物车添加更多项目。问题是,每当我这样做时:
returnredirect(url\u for('buy'))
,就会触发一个获取请求,请求页面,当按下按钮时,发送post请求时,会话就会被清除

from flask import *
from flask_pymongo import PyMongo
from flask_bootstrap import Bootstrap

app = Flask(__name__)

app.config['MONGO_URI'] = "mongodb://localhost:27017/one-stop-shop"
app.secret_key = 'asdfasdfasdf asdfa saf sdafw er wafe  wf waef wa we awe dsf sadl f;jaosidf hopwji'

Bootstrap(app)
mongo = PyMongo(app)


@app.route('/')
def home():
    return render_template('home.html')


@app.route('/add', methods=['GET', 'POST'])
def add():
    if request.method == 'GET':
        return render_template('add.html')
    elif request.method == 'POST':
        doc = {}
        for item in request.form:
            if item != 'add':
                doc[item] = request.form[item]
        mongo.db.products.insert_one(doc)
        return redirect('/')


@app.route('/buy', methods=['GET', 'POST'])
def buy():
    if request.method == 'GET':
        session['cart-items'] = {}
        items = list(mongo.db.products.find({}))
        return render_template('buy2.html', products=items)
    elif request.method == 'POST':
        try:
            print(session)
            items2 = session['cart-items']
        except KeyError:
            items2 = {}
        items = {}
        for name, value in request.form.items():
            items[name] = value
        print(items, 1)
        if items2 != {}:
            for key, value in items.items():
                if key in items2:
                    if items[key] + items2[key] > mongo.db.products.find({'_id': key}):
                        items[key] = mongo.db.products.find({'_id': key})['Quantity Limit']
                    else:
                        items[key] += items2[key]
        session['cart-items'] = items
        print(items, 2)
        print(items2, 3)
        print(session)
        print(session['cart-items'])
        return redirect(url_for('buy'))

if __name__ == '__main__':
    app.run(debug=True)
感谢您的帮助。
顺便说一句,清除后,在执行打印(会话)时,这是输出:
在重定向之前尝试设置
session.modified=true

从:

请注意,对可变结构的修改不会自动拾取,在这种情况下,您必须自己显式地将该属性设置为True


不,不走运。它仍然清除它。顺便说一句,在清除后,当执行打印(会话)时,这是输出:哦,我之前错过了它,但您正在将其设置为该值:
session['cart-items']={}
只要您在购买路线上进行一次获取。所以它可以被设置,但是你要覆盖它。