Seri 2 Web dengan Flask : Aplikasi Flask dengan SQLite dan Bootstrap

81 views 07:21 0 Comments 03/16/2025

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: , , , ,

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *