Using the app below and Flask 0.11.1, I navigated to the routes associated with the following function calls, with the given results:
Flask uses a CallbackDict to track modifications to sessions.
It will only register modifications when you set or delete a key. Here, you modify the values in place, which it will not detect. Try this:
@app.route('/r/')
def remove(id):
val = session['list']
val.remove(str(id))
session['list'] = val
return ",".join(session['list'])
…and same with other changes.
Alternatively, you can flag the modification yourself instead of triggering the detection:
@app.route('/r/')
def remove(id):
session['list'].remove(str(id))
session.modified = True
return ",".join(session['list'])