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')
