
Flask User Registration Login Function Implementation Guide
Steps and code logic for implementing user registration and login function in Flask project
Implementing user registration and login functions in a Flask project usually involves the following steps and code logic:
1. Environmental preparation
- Install Flask:
pip install Flask
- Install Flask-SQLAlchemy:
pip install Flask-SQLAlchemy
(for database operations) - Install Flask-WTF:
pip install Flask-WTF
(for form processing) - Install Flask-Login:
pip install Flask-Login
(used to manage user sessions)
2. Initialize Flask applications and configurations
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)
login_manager = LoginManager()
login_manager.init_app(app)
login_manager.login_view = 'login'
3. Create a user model
from flask_login import UserMixin
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(100), unique=True, nullable=False)
password = db.Column(db.String(100), nullable=False)
def __repr__(self):
return '<User %r>' % self.username
4. Create user registration and login forms
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Length, EqualTo, ValidationError
class RegistrationForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(), Length(min=4, max=25)])
password = PasswordField('Password', validators=[DataRequired()])
confirm_password = PasswordField('Confirm Password', validators=[DataRequired(), EqualTo('password')])
submit = SubmitField('Sign Up')
def validate_username(self, username):
user = User.query.filter_by(username=username.data).first()
if user:
raise ValidationError('That username is taken. Please choose a different one.')
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(), Length(min=4, max=25)])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Login')
5. User registration and login view
from flask import render_template, url_for, redirect, request, flash
from werkzeug.security import generate_password_hash, check_password_hash
@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, password=hashed_password)
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'))
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(username=form.username.data).first()
if user and check_password_hash(user.password, form.password.data):
login_user(user)
return redirect(url_for('dashboard'))
else:
flash('Login Unsuccessful. Please check username and password', 'danger')
return render_template('login.html', title='Login', form=form)
@app.route('/dashboard')
@login_required
def dashboard():
return 'Welcome to the Dashboard!'
6. User load callback
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
7. Create a database
with app.app_context():
db.create_all()
8. Run the Flask app
if __name__ == '__main__':
app.run(debug=True)
This is a basic user registration and login function implementation. You need to create the corresponding HTML template files (such as register.html
and login.html
) to render the form. These steps and code logic provide a basic user authentication system that can be expanded and modified according to specific needs.