Search code examples
pythonflaskflask-session

TypeError: 'Session' object does not support item assignment


I'm using Flask-Session to determine weather or not someone is logged into a site, but when I try to assign a value to it, it returns the error "TypeError: 'Session' object does not support item assignment".

    @app.route("/login", methods=["POST", "GET"])
        def login():  
            if request.method == "POST":  
                username = request.form["gets username input"]  
                password = request.form["gets password input"]  
                allowed = db.execute(SQL for checking if the username and password are in the SQL db)  
                allowed = allowed.first()[0]  
                if allowed == 1:  
                    loginsession = Session()  
                    id = db.execute(SQL for finding the id of the user)  
                    loginsession["id"] = id  
                    print(loginsession["id"])  
                    return redirect(url_for("the route to the profile page"))  
                else:  
                    return "Incorrect username or password"  
            else:  
                return render_template("login.html")

Thanks for any help!


Solution

  • You can use this example

     @app.route("/login",methods = ["POST","GET"])  
        def login():  
            if request.method == "POST":  
                try:   
                    Email = request.form["email"]
                    pwd = request.form["pwd"]    
                    with sqlite3.connect("Account.db") as con:  
                        cur = con.cursor()
                        print("Connection test")   
                        cur.execute("SELECT * FROM Account WHERE Email= ? and Password= ?",(Email, pwd))
                        row = cur.fetchone()
                        print("query test")  
                        while row is not None:
                            session['email']=request.form['email']  
                            print(row[1])
                            return render_template("success.html",msg = msg)
                        else:
                            msg = "sorry wrong id"
                            return render_template("failure.html",msg = msg)
                except:  
                    con.rollback()  
                    msg = "problem"  
    

    And then in another function

     if 'email' in session:
            email = session['email']   
            return render_template("view.html") 
        else:
            return '<p>Please login first</p>'