May-07-2020, 05:22 PM
Hi . As title says after I press login button the page refreshes and it doesn't redirect me to the '/dashboard' route .
My code :
My code :
from flask import Flask, render_template, redirect, request, url_for from flask_wtf import FlaskForm from wtforms.validators import InputRequired, Email, Length from wtforms import Form, BooleanField, StringField, PasswordField, validators from flask_sqlalchemy import SQLAlchemy from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user app = Flask(__name__) app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT' app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///data.db' db = SQLAlchemy(app) login_manager = LoginManager() login_manager.init_app(app) login_manager.login_view = 'login' class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(100)) email = db.Column(db.String(100)) password = db.Column(db.String(100)) rank = db.Column(db.String(100), default='Newbie') @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id)) class RegisterFormValidation(FlaskForm): email = StringField('email', validators=[InputRequired(), Email(message='Invalid email'), Length(max=50)]) username = StringField('username', validators=[InputRequired(), Length(min=2, max=15)]) password = PasswordField('password', validators=[InputRequired(), Length(min=2, max=80)]) class LoginForm(FlaskForm): username = StringField('username', validators=[InputRequired(), Length(min=4, max=15)]) password = PasswordField('password', validators=[InputRequired(), Length(min=8, max=80)]) @app.route('/') def index(): return render_template('index.html') @app.route('/register', methods=['GET','POST']) def register(): if RegisterFormValidation().validate_on_submit(): new_user = User(username=RegisterFormValidation().username.data, email=RegisterFormValidation().email.data, password=RegisterFormValidation().password.data) db.session.add(new_user) db.session.commit() return render_template('register.html', form=RegisterFormValidation()) @app.route('/login', methods=['GET','POST']) def login(): if LoginForm().validate_on_submit(): user = User.query.filter_by(username=LoginForm().username.data).first() if user.password == LoginForm().password.data: login_user(user) return redirect(url_for('dashboard')) return render_template('login.html', form=LoginForm()) @app.route('/dashboard') @login_required def dashboard(): return render_template('dashboard.html', name=current_user.username) @app.route('/logout') def logout(): logout_user() return redirect(url_for('index')) @app.route('/delete/<int:id>') @login_required def delete(id): userid = User.query.get(id) db.session.delete(userid) db.session.commit() return render_template('dashboard.html')