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.