1. Pendahuluan
Aplikasi ini adalah sebuah web sederhana berbasis Flask yang menggunakan SQLite sebagai database. Aplikasi ini memiliki fitur:
- Registrasi pengguna
- Menampilkan data pengguna yang telah terdaftar
- Menggunakan Bootstrap untuk tampilan yang menarik
2. Struktur Folder
Berikut struktur folder dari aplikasi ini:
flask/
│── templates/ # Folder untuk halaman HTML
│ │── index.html # Halaman utama
│ │── register.html # Halaman pendaftaran
│ │── users.html # Halaman daftar pengguna
│ │── base.html # Halaman untuk pengaturan template boostrap
│── app.py # File utama aplikasi Flask
│── config.py # Konfigurasi aplikasi
│── models.py # Model database (ORM SQLAlchemy)
3. Konfigurasi Aplikasi
config.py
File ini berisi konfigurasi untuk aplikasi, termasuk lokasi database.
import os
class Config:
SECRET_KEY = os.urandom(24)
SQLALCHEMY_DATABASE_URI = 'sqlite:///database.db'
SQLALCHEMY_TRACK_MODIFICATIONS = False
4. Model Database
models.py
Model database menggunakan SQLAlchemy, berisi tabel User
dengan field id
, username
, email
, dan password
.
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(150), nullable=False)
email = db.Column(db.String(150), unique=True, nullable=False)
password = db.Column(db.String(256), nullable=False)
@staticmethod
def query_by_email(email):
return User.query.filter_by(email=email).first()
5. Aplikasi Flask
app.py
from flask import Flask, render_template, request, redirect, url_for, flash
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from werkzeug.security import generate_password_hash, check_password_hash
from models import db, User
from config import Config
app = Flask(__name__)
app.config.from_object(Config)
db.init_app(app)
migrate = Migrate(app, db)
@app.route('/')
def home():
# Render halaman utama
return render_template('index.html')
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
# Ambil data dari form
username = request.form.get('username')
email = request.form.get('email')
password = request.form.get('password')
# Validasi input
if not username or not email or not password:
flash('Harap isi semua kolom', 'error')
return redirect(url_for('register'))
# Cek apakah email sudah terdaftar
existing_user = User.query.filter_by(email=email).first()
if existing_user:
flash('Email sudah terdaftar', 'error')
return redirect(url_for('register'))
# Hash password dan simpan user baru
hashed_password = generate_password_hash(password, method='pbkdf2:sha256', salt_length=8)
new_user = User(username=username, email=email, password=hashed_password)
db.session.add(new_user)
db.session.commit()
# Tampilkan pesan sukses
flash('Registrasi berhasil!', 'success')
return redirect(url_for('home'))
# Render halaman registrasi
return render_template('register.html')
@app.route('/users')
def users():
# Ambil semua data user
users = User.query.all()
return render_template('users.html', users=users)
if __name__ == '__main__':
with app.app_context():
# Buat semua tabel di database
db.create_all()
# Jalankan aplikasi dalam mode debug
app.run(debug=True)
6. Halaman HTML
1. index.html (Halaman Utama)
{% extends "base.html" %}
{% block title %}Home{% endblock %}
{% block content %}
<div class="text-center">
<h1 class="mt-5">Welcome to My Flask App</h1>
<p class="lead">Ini aplikasi Flask dengan tampilan Bootstrap.</p>
<a href="{{ url_for('register') }}" class="btn btn-primary">Daftar Sekarang</a>
</div>
{% endblock %}
2. register.html (Halaman Pendaftaran)
{% extends "base.html" %}
{% block title %}Register{% endblock %}
{% block content %}
<div class="row justify-content-center">
<div class="col-md-6">
<h2 class="text-center">Register</h2>
<form method="POST">
<div class="mb-3">
<label class="form-label">Username</label>
<input type="text" name="username" class="form-control" required>
</div>
<div class="mb-3">
<label class="form-label">Email</label>
<input type="email" name="email" class="form-control" required>
</div>
<div class="mb-3">
<label class="form-label">Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<button type="submit" class="btn btn-success w-100">Register</button>
</form>
</div>
</div>
{% endblock %}
3. users.html (Halaman Daftar Pengguna)
{% extends "base.html" %}
{% block title %}Daftar Pengguna{% endblock %}
{% block content %}
<div class="container mt-4">
<h2 class="text-center">Daftar Pengguna</h2>
<table class="table table-striped">
<thead class="table-dark">
<tr>
<th>No</th>
<th>Username</th>
<th>Email</th>
</tr>
</thead>
<tbody>
{% for user in users %}
<tr>
<td>{{ loop.index }}</td>
<td>{{ user.username }}</td>
<td>{{ user.email }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}
7. Instalasi dan Menjalankan Aplikasi
1. Install Python dan Virtual Environment
Pastikan Python sudah terinstall, lalu buat virtual environment dan aktifkan:
python -m venv env
source env/bin/activate # Untuk Mac/Linux
env\Scripts\activate # Untuk Windows
2. Install Library yang Dibutuhkan
Jalankan perintah berikut untuk menginstall dependensi:
pip install flask flask-sqlalchemy flask-migrate flask-wtf werkzeug
3. Jalankan Aplikasi
flask run
Akses aplikasi melalui http://127.0.0.1:5000/



8. Kesimpulan
Aplikasi ini adalah contoh sederhana penggunaan Flask dengan SQLite dan Bootstrap. Jika ingin menambahkan fitur login atau edit data, bisa dikembangkan lebih lanjut.
Selanjutnya : Seri 3 – Penambahan Menu Edit dan Hapus
Sebelumnya : Seri 1 Web dengan Flask : Install Flask di Laragon untuk Pemula
Tag: flask, laragon, Python, Web Programming, website