-
สร้างฐานข้อมูล: รันสคริปต์เพื่อสร้างไฟล์ฐานข้อมูล
crowdfunding.db
และเพิ่มข้อมูลเริ่มต้นpython init_db.py
-
รันแอปพลิเคชัน:
python app.py
ส่วน Model อยู่ในไดเรกทอรี services/
ทำหน้าที่เชื่อมต่อและจัดการข้อมูลในฐานข้อมูล (crowdfunding.db
) รวมถึงประมวลผลตรรกะทางธุรกิจ
services/database.py
: คลาสพื้นฐานสำหรับจัดการการเชื่อมต่อฐานข้อมูล SQLiteservices/user_service.py
: จัดการข้อมูลผู้ใช้ เช่น การตรวจสอบการล็อกอินservices/project_service.py
: จัดการข้อมูลโปรเจกต์ เช่น การดึงรายการโปรเจกต์ทั้งหมด, การค้นหา, และการเรียงลำดับservices/category_service.py
: จัดการข้อมูลหมวดหมู่services/reward_tier_service.py
: จัดการข้อมูลระดับของรางวัล (Reward Tiers) ของแต่ละโปรเจกต์services/pledge_service.py
: จัดการตรรกะหลักของการสนับสนุนโปรเจกต์ (Pledge) เช่น การตรวจสอบเงื่อนไขและบันทึกข้อมูลการสนับสนุนinit_db.py
: สคริปต์สำหรับสร้างฐานข้อมูลและเพิ่มข้อมูลเริ่มต้น (ไม่ใช่ส่วนหนึ่งของแอปพลิเคชันขณะทำงาน)
ส่วน View อยู่ในไดเรกทอรี templates/
เป็นไฟล์ HTML ที่ใช้แสดงผลข้อมูลให้ผู้ใช้เห็น
templates/base.html
: เทมเพลตหลักที่เป็นโครงสร้างของทุกหน้าtemplates/login.html
: หน้าสำหรับเข้าสู่ระบบtemplates/index.html
: หน้าหลักสำหรับแสดงรายการโปรเจกต์ทั้งหมดtemplates/project_detail.html
: หน้าแสดงรายละเอียดของโปรเจกต์และฟอร์มสำหรับสนับสนุนtemplates/stats.html
: หน้าแสดงสถิติการสนับสนุนของผู้ใช้
ส่วน Controller คือไฟล์ app.py
ซึ่งทำหน้าที่เป็นศูนย์กลางของแอปพลิเคชัน
- รับคำสั่ง (HTTP Request) จากผู้ใช้ผ่าน URL Routes
- เรียกใช้ Service ต่างๆ (Model) เพื่อจัดการข้อมูล
- ส่งข้อมูลที่ได้ไปแสดงผลที่หน้าเว็บ (View) ผ่านการ Render Template
- ผู้ใช้ส่ง Request มายัง URL ที่กำหนดไว้
- Controller (
app.py
) รับ Request และเรียกใช้ Model (คลาสในservices/
) ที่เกี่ยวข้อง - Model ดึงหรือบันทึกข้อมูลลงในฐานข้อมูล แล้วส่งผลลัพธ์กลับไปให้ Controller
- Controller ส่งต่อข้อมูลที่ได้รับไปยัง View (ไฟล์ใน
templates/
) - View นำข้อมูลมาสร้างเป็นหน้าเว็บ HTML แล้วส่งกลับไปแสดงผลที่เบราว์เซอร์ของผู้ใช้
GET, POST /login
:- Action: จัดการการเข้าสู่ระบบของผู้ใช้
- View:
login.html
GET /
:- Action: แสดงรายการโปรเจกต์ทั้งหมด พร้อมฟังก์ชันค้นหาและจัดเรียง
- View:
index.html
GET, POST /project/<id>
:- Action: แสดงรายละเอียดโปรเจกต์ และรับข้อมูลการสนับสนุน (Pledge) จากผู้ใช้ผ่านฟอร์ม
- View:
project_detail.html
GET /stats
:- Action: แสดงสถิติการสนับสนุนโปรเจกต์ของผู้ใช้ที่ล็อกอินอยู่
- View:
stats.html
GET /logout
:- Action: จัดการการออกจากระบบ
index.html
: หน้าแรกที่ผู้ใช้เห็นหลังจากล็อกอิน แสดงโปรเจกต์ทั้งหมดให้เลือกดูproject_detail.html
: หน้าที่สำคัญที่สุดสำหรับการมีปฏิสัมพันธ์กับผู้ใช้ ผู้ใช้สามารถดูรายละเอียดและตัดสินใจสนับสนุนโปรเจกต์ได้จากหน้านี้stats.html
: หน้าสำหรับให้ผู้ใช้ดูสถิติการสนับสนุนของตนเอง โดยจะแสดงรายการว่าการสนับสนุนใดสำเร็จหรือถูกปฏิเสธ