我有一个Session对象作为列表,我想在列表中更新它。我曾尝试遍历Flask Session对象,但它确实起作用,但是当我尝试在Flask Session中修改值时,它给了我一个错误。
@app.route("/")
def index():
if "lenta" not in session:
session["lenta"] = [[None, None, None], [None, None, None], [None, None, None]]
session["move"] = "X"
return render_template("game.html", game=session["lenta"], move=session["move"])
@app.route("/play/<int:row>/<int:col>")
def play(row, col):
for i in session["lenta"]:
for j in i:
session["lenta"][i][j] = row, col
redirect(url_for("index"))
我希望session["lenta"][i][j]
将使用HTML中的Row和Col值进行更新,但出现错误:
session["lenta"][i][j] = row, col
TypeError: list indices must be integers or slices, not list
答案 0 :(得分:0)
似乎您正在遍历session['lenta']
的元素(即for i in session["lenta"]
),但是session [“ lenta”]的元素本身就是列表(例如[None, None, None]
) 。这就是为什么您会收到此错误的原因。
要解决此问题,请尝试调用要迭代的元素,如下所示:
def play(row, col):
for el in session["lenta"]:
for j, _ in enumerate(el):
el[j] = row, col
redirect(url_for("index"))
看看是否可行,祝您好运!
[为澄清而编辑]: 我没有您的完整代码,我检查的部分是:
z = [[None, None, None], [None, None, None], [None, None, None]]
for vi in z:
for j,vj in enumerate(z):
vi[j] = (i,j)
(在Python 3.6上)