Question: from flask import Flask, render_template, url_for, flash, redirect from flask_sqlalchemy import SQLAlchemy from forms import RegistrationForm, LoginForm from werkzeug.security import generate_password_hash, check_password_hash from sqlalchemy.exc import

from flask import Flask, render_template, url_for, flash, redirect from flask_sqlalchemy import SQLAlchemy from forms import RegistrationForm, LoginForm from werkzeug.security import generate_password_hash, check_password_hash from sqlalchemy.exc import IntegrityError app = Flask(__name__, template_folder='template') app.app_context().push() app.config['SECRET_KEY'] = 'HELLO WORLD!' app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db' db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) password = db.Column(db.String(60), nullable=False) def __init__(self, username, email, password): self.username = username self.email = email self.password = generate_password_hash(password) def check_password(self, password): return check_password_hash(self.password, password) @app.route("/") def index(): return redirect(url_for('login')) @app.route("/register", methods=['GET', 'POST']) def register(): form = RegistrationForm() if form.validate_on_submit(): hashed_password = generate_password_hash(form.password.data) user = User(username=form.username.data, email=form.email.data, password=hashed_password) try: db.session.add(user) db.session.commit() flash('Your account has been created! You are now able to log in', 'success') return redirect(url_for('login')) except IntegrityError as e: db.session.rollback() flash('Email already exists.', 'danger') return redirect(url_for('register')) return render_template('register.html', title='Register', form=form) @app.route("/login", methods=['GET', 'POST']) def login(): form = LoginForm() if form.validate_on_submit(): user = User.query.filter_by(email=form.email.data).first() if user and user.check_password(form.password.data): flash('You have been logged in!', 'success') return redirect(url_for('home')) else: flash('Login Unsuccessful. Please check email and password') return render_template('login.html', title='Login', form=form) def create_tables(): with app.app_context(): db.create_all() if __name__ == '__main__': with app.app_context(): create_tables() app.run(port=4998) 

i am able to create user with register form but unable to login using the registered user can you help troubleshoot my code to see whats wrong

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!