บทความนี้เหมาะสำหรับผู้เริ่มต้น ไม่จำเป็นต้องมีพื้นฐานมาก่อน คุณจะได้ Flask App ที่รันได้ทันที พร้อมระบบ Login, Dashboard, และ SQLite DB
1️⃣ เตรียมโครงสร้างโปรเจค
สร้างโฟลเดอร์โปรเจค และไฟล์ตามตัวอย่างนี้:
project/
├─ app.py # Main Flask app
├─ config.py # Config สำหรับ Flask + SQLAlchemy
├─ models.py # Models DB
├─ templates/
│ ├─ base.html
│ ├─ login.html
│ └─ dashboard.html
├─ instance/ # Database จะถูกสร้างที่นี่
└─ requirements.txt # รายการ library
คุณสามารถปรับชื่อไฟล์และ folder ตามต้องการ
2️⃣ สร้าง virtual environment และติดตั้ง dependencies
- สร้าง venv
python -m venv venv
- เปิดใช้งาน venv
- Windows:
venv\Scripts\activate
- Mac/Linux:
source venv/bin/activate
- สร้าง
requirements.txtตัวอย่าง
Flask
Flask-Login
Flask-SQLAlchemy
Flask-Migrate
pandas
openpyxl
python-dotenv
Werkzeug
- ติดตั้ง dependencies
pip install -r requirements.txt
3️⃣ ตั้งค่า Flask + SQLAlchemy
ตัวอย่าง config.py:
import os
from dotenv import load_dotenv
load_dotenv()
class Config:
SECRET_KEY = os.getenv('SECRET_KEY', 'devkey123')
SQLALCHEMY_DATABASE_URI = os.getenv('DATABASE_URL', 'sqlite:///instance/app.db')
SQLALCHEMY_TRACK_MODIFICATIONS = False
ตัวอย่าง app.py:
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from config import Config
app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
migrate = Migrate(app, db)
from models import User, Record
if __name__ == '__main__':
app.run(debug=True)
4️⃣ สร้าง Models (DB Schema)
models.py:
from app import db
from datetime import datetime
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password_hash = db.Column(db.String(200), nullable=False)
role = db.Column(db.String(20), default='user')
created_at = db.Column(db.DateTime, default=datetime.utcnow)
class Record(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(200))
category = db.Column(db.String(100))
value = db.Column(db.Float)
imported_at = db.Column(db.DateTime, default=datetime.utcnow)
5️⃣ สร้างฐานข้อมูล SQLite
- สร้าง folder
instance/(ถ้ายังไม่มี):
mkdir instance
- Initialize migration
flask db init
- สร้าง migration script
flask db migrate -m "Initial migration"
- Apply migration (สร้าง tables จริง)
flask db upgrade
ตอนนี้ DB (instance/app.db) จะถูกสร้าง พร้อม table User และ Record
6️⃣ สร้าง Admin User
เปิด Python shell:
python
รัน:
from app import app, db
from models import User
from werkzeug.security import generate_password_hash
with app.app_context():
admin = User(username="admin", password_hash=generate_password_hash("1234"), role="admin")
db.session.add(admin)
db.session.commit()
✅ ตอนนี้คุณมี admin user สำหรับ login:
- Username:
admin - Password:
1234
7️⃣ รัน Flask App
- ตั้ง environment variables (เลือกตาม OS)
- Mac/Linux:
export FLASK_APP=app.py
export FLASK_ENV=development
flask run
- Windows:
set FLASK_APP=app.py
set FLASK_ENV=development
flask run
หรือรันตรงๆ:
python app.py
- เปิด browser:
http://127.0.0.1:5000/
- หน้า login จะปรากฏ
- ใช้ admin login
- หลัง login จะเข้าหน้า dashboard
8️⃣ หมายเหตุสำคัญ
- SQLite เหมาะสำหรับเริ่มต้น / พัฒนา
- ถ้าใช้ production แนะนำ PostgreSQL/MySQL และตั้งค่า DATABASE_URL ใน
.env - เปลี่ยน
SECRET_KEYให้เป็นรหัสลับจริงใน production - สามารถขยาย dashboard, import Excel, แก้ไข user, หรือ CRUD ได้ตามต้องการ