14 คะแนน โดย GN⁺ 2025-03-30 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • เว็บเฟรมเวิร์กที่ออกแบบมาเพื่อให้สร้างโปรดักต์ด้วย Python ได้อย่างรวดเร็ว (fork มาจาก Django)
  • สามารถเริ่มพัฒนาแบบโลคัลได้ด้วยคำสั่งเดียว และย้ายไปสู่โปรดักชันได้ผ่านแดชบอร์ดและฟีเจอร์แฟลก เป็นต้น
    • โคลน starter kit เพื่อเริ่มต้นได้อย่างรวดเร็ว
  • ประกอบด้วยแพ็กเกจหลัก plain และแพ็กเกจเสริมทางการที่ติดตั้งเพิ่มเติมได้ตามต้องการ

ความสามารถของแพ็กเกจ plain

  • เชื่อมโยงรูปแบบ URL กับฟังก์ชัน view ของ Python
  • จัดการคำขอและคำตอบ HTTP
  • เรนเดอร์ HTML ด้วยเทมเพลต Jinja
  • Form สำหรับจัดการข้อมูลที่ผู้ใช้ป้อน
  • มีอินเทอร์เฟซบรรทัดคำสั่ง (CLI)
  • ให้บริการ static assets เช่น CSS, JS และรูปภาพได้
  • ขยายความสามารถของแอปผ่าน Middleware
  • ผสานรวมแพ็กเกจทางการและแพ็กเกจ third-party ได้อย่างง่ายดาย
  • มีระบบตรวจสอบล่วงหน้าก่อนรันแอป (Preflight check system)

ความสามารถที่ขยายได้ผ่านแพ็กเกจ first-party

  • plain.models: มี ORM สำหรับจัดเก็บข้อมูลใน Postgres, MySQL และ SQLite
  • plain.cache: โซลูชันแคชที่ทำงานร่วมกับฐานข้อมูลเดิมได้
  • plain.email: มีความสามารถสำหรับตั้งค่าและส่งอีเมลทั้งแอป
  • plain.sessions: อ่านและเขียนเซสชันแบบอิงฐานข้อมูลได้
  • plain.worker: โซลูชันงานเบื้องหลังที่รองรับฐานข้อมูลเดิม
  • plain.api: สร้าง JSON API ได้ด้วยสถาปัตยกรรม class-based view

การยืนยันตัวตน

  • plain.auth: มีพื้นฐานสำหรับเพิ่มผู้ใช้ ยืนยันตัวตนคำขอ และจำกัดการเข้าถึง view
  • plain.oauth: โซลูชัน OAuth ที่ยืดหยุ่น รองรับ social login สมัยใหม่และการเข้าถึง API
  • plain.passwords: รองรับการล็อกอินแบบใช้รหัสผ่านดั้งเดิม
  • plain.loginlink: มีลิงก์ล็อกอินแบบใช้ครั้งเดียวสำหรับการล็อกอินโดยไม่ใช้รหัสผ่าน
  • plain.passkeys: มีแผนจะรองรับการล็อกอินแบบไม่ใช้รหัสผ่าน

ผู้ดูแลระบบ

  • plain.admin: มีแดชบอร์ดผู้ดูแลระบบที่ปรับแต่งได้อย่างสมบูรณ์
  • plain.flags: ฟีเจอร์แฟลกแบบอิงฐานข้อมูลที่ควบคุมคอนเทนต์รายผู้ใช้ได้
  • plain.support: ให้บริการซัพพอร์ตลูกค้าได้โดยไม่ต้องพึ่งบริการภายนอก
  • plain.redirection: มอนิเตอร์ 404 และจัดการการรีไดเรกต์จากฐานข้อมูล
  • plain.pageviews: ดูได้ว่าผู้ใช้กำลังเห็นอะไร เพื่อให้การซัพพอร์ตที่ดียิ่งขึ้น

การพัฒนา

  • plain.dev: เริ่มสภาพแวดล้อมพัฒนาแบบโลคัลได้ด้วยคำสั่งเดียว
  • plain.pytest: เขียนและรันทดสอบได้ด้วยไลบรารีทดสอบยอดนิยมของ Python
  • plain.code: ฟอร์แมตและ lint โค้ด Python ได้ด้วยค่าตั้งต้นพื้นฐาน
  • plain.tunnel: เปิดแอปโลคัลสู่อินเทอร์เน็ตเพื่อการผสานรวม webhook

ฟรอนต์เอนด์

  • plain.tailwind: มีการผสานรวมระดับ first-class กับ CSS framework ยอดนิยม
  • plain.htmx: สร้างประสบการณ์ผู้ใช้สมัยใหม่ได้ด้วยเครื่องมือที่มีอยู่เดิม
  • plain.elements: นำเสนอกระบวนทัศน์ใหม่สำหรับคอมโพเนนต์ที่นำกลับมาใช้ซ้ำได้ในเทมเพลตของแอป
  • plain.pages: มี file-based routing โดยใช้ HTML และ Markdown
  • plain.esbuild: มีกระบวนการบิลด์ที่เรียบง่ายสำหรับการคอมไพล์ JavaScript
  • plain.vendor: ดาวน์โหลดและโฮสต์ JavaScript และ CSS assets เองได้โดยไม่ต้องพึ่ง CDN

1 ความคิดเห็น

 
GN⁺ 2025-03-30
ความเห็นบน Hacker News
  • หลายคนอาจไม่รู้ว่า bug tracker ของ Django Rest Framework ถูกเปลี่ยนเป็นแบบปิด และกำลังมองหาผู้ดูแลคนใหม่

    • Django ยอดเยี่ยม แต่ต้องการการเปลี่ยนแปลงแบบเดียวกับยุคฟื้นฟูของ Angular
    • อยากมีส่วนร่วม แต่ความพยายามส่วนใหญ่ติดค้างอยู่ที่คณะกรรมการ
    • การ fork อาจไม่ใช่คำตอบ แต่จำเป็นต้องมีการลงมือทำบางอย่าง
    • ถ้าต้องการเงินสนับสนุน การเปิดรับเงินบริจาคก็เป็นทางเลือกหนึ่ง
    • ชุมชนนักพัฒนา Django มีขนาดเล็กและเชื่อมโยงกันแน่นแฟ้น
    • ต้องการชุมชนที่เปิดกว้างต่อการมีส่วนร่วม และให้ความสำคัญกับความสัมพันธ์ระยะยาว
  • มีความรู้สึกทั้งบวกและลบต่อการ fork ของ Django

    • การทดลองนอกโปรเจ็กต์ดั้งเดิมนั้นมีคุณค่า แต่การ fork เป็นการประกาศจุดยืนครั้งใหญ่
    • รู้สึกว่าความพยายามร่วมกันของ Django ถูกมองข้าม
    • กังวลว่าอาจเดินไปในทิศทางเชิงพาณิชย์หรือแคบเกินไป
    • ยิ่งทำให้รู้สึกรัก Django มากขึ้น
  • จุดแข็งของ Django คือ ORM และ ecosystem/แนวปฏิบัติ

    • ยากที่จะเข้าใจเหตุผลในการทำให้ compatibility พังด้วยการ fork
    • อยากเห็นความสามารถของ admin ที่ดีขึ้น แต่เรื่องนี้แก้ได้ด้วย Django project template
  • Django มีข้อด้อยอยู่บ้าง

    • worker และ REST API ยังไม่ใช่พลเมืองชั้นหนึ่ง
    • ระบบยืนยันตัวตนของ Django เป็นแบบพื้นฐานแต่ใช้งานได้ดี
    • ความยากในการใช้ Django อาจเพิ่มความซับซ้อน
  • รู้สึกประหลาดใจกับมุมมองด้านลบต่อ Django

    • Django ตามหลัง Laravel และ Rails อยู่
    • ecosystem แตกเป็นเสี่ยง ๆ และแพ็กเกจจำนวนมากก็เก่าแล้ว
    • static file pipeline ของ Django ไม่ได้มีมาให้โดยปริยาย
    • มีปัญหาเรื่อง user model และข้อจำกัดของ template
    • เลยย้ายไป Rails และเริ่มสร้างเว็บแอปด้วยมัน
  • ย้ายจาก Django ไปใช้ Supabase/Firebase

    • มีปลั๊กอินเยอะและ self-host ได้ง่าย
    • รู้สึกว่าถ้ามีปลั๊กอิน Django ที่ดีกว่านี้น่าจะช่วยได้
  • ไม่ชอบที่การตั้งค่าเป็นสตริงที่อ้างถึงคลาส

    • อยากให้เวลาอ้างถึงคลาสหรืออ็อบเจ็กต์สามารถไล่ดูต่อได้ง่าย
    • ภายหลังมีปลั๊กอินมาแก้ได้ แต่ LSP รองรับให้ฟรีอยู่แล้ว
  • ลองดูเอกสารของ Plain

    • ฟีเจอร์ทั้งหมดมีอยู่ใน Django อยู่แล้ว หรือมีในแพ็กเกจที่รองรับดี
    • นโยบายการเลิกใช้ของ Django ช่วยให้ดูแลโปรเจ็กต์ระยะยาวได้
    • คณะกรรมการช่วยป้องกันไม่ให้โปรเจ็กต์ถูกทำให้เป็นเชิงพาณิชย์ และตัดสินใจในสิ่งที่ดีที่สุดสำหรับผู้ใช้ส่วนใหญ่
    • Django ถูกสร้างมาเพื่อหนังสือพิมพ์ แต่เป็นเฟรมเวิร์กแบบใช้งานทั่วไป
  • ไม่แน่ใจว่า Plain จะประสบความสำเร็จหรือไม่ แต่เข้าใจเหตุผลของการ fork

    • ผู้นำของ Django ไม่สามารถผลักดัน Django ให้ก้าวต่อไปได้