# Membuat form login dengan Flask-WTF
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.validators import DataRequired, Length
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired(), Length(min=2, max=20)])
password = PasswordField('Password', validators=[DataRequired()])
submit = SubmitField('Login')
# Membuat fungsi login dengan Flask dan SQLAlchemy
from flask import Flask, render_template, redirect, url_for, flash
from flask_sqlalchemy import SQLAlchemy
from login_form import LoginForm
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db'
db = SQLAlchemy(app)
# Membuat model user dengan SQLAlchemy
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
password = db.Column(db.String(20), nullable=False)
def __repr__(self):
return f"User('{self.username}', '{self.password}')"
# Membuat route untuk halaman login
@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
# Mengecek apakah username dan password sesuai dengan database
user = User.query.filter_by(username=form.username.data).first()
if user and user.password == form.password.data:
# Jika sesuai, redirect ke halaman utama
flash('Anda telah login', 'success')
return redirect(url_for('home'))
else:
# Jika tidak sesuai, tampilkan pesan error
flash('Username atau password Anda salah', 'danger')
return render_template('login.html', form=form)
# Membuat route untuk halaman utama
@app.route('/')
def home():
return render_template('home.html')
# Menjalankan aplikasi
if __name__ == '__main__':
app.run(debug=True)