Django vs Flask ต่างกันอย่างไร ควรเลือกตัวไหนดี ?

   By: Withoutcoffee Icantbedev

   อัปเดตล่าสุด March 15, 2023

Django vs Flask ต่างกันอย่างไร ควรเลือกตัวไหนดี ?

Django และ Flask ล้วนเป็น web frameworks ที่ได้รับความยอดนิยมสูงสุดของ Python ทั้งคู่ ในบทความนี้เราจะมาดูความแตกต่างระหว่าง 2 เฟรมเวิร์คนี้ เพื่อเลือกให้เหมาะสมกับโปรเจคท์ web development ของเราครับ

บทความแนะนำ:



Django


จุดเด่น

  • สามารถพัฒนาโปรเจคท์ได้อย่างรวดเร็ว ดังคำจำกัดความของ Django Framework ที่ว่า "The Web framework for perfectionists with deadlines"
  • สามารถสเกลแอพหรือโปรเจคท์ได้เป็นอย่างดีเมื่อมีทราฟฟิกที่สูงขึ้นหรือผู้ใช้มากขึ้น
  • มีการจัดการโครงสร้างต่าง ๆ ของโปรเจคท์ที่เป็นระเบียบเรียบร้อยมีมาตรฐาน
  • มี Documents ที่ยอดเยี่ยมและสุดยอดมาก
  • มีหน้า Admin Site และระบบ Built-in Authentication Systems ต่าง ๆ มาให้เพรียบพร้อม ดังนั้นจึงไม่แปลกใจเลยว่า ทำไมถึงสร้างตัวโพรโตไทป์ได้อย่างรวดเร็ว
  • Cross site request forgery (CSRF) Protection ดังนั้นจึงมั่นใจได้ว่าเว็บที่เราพัฒนานั้นมีความปลอดภัยสูง
  • Django มี ORM(Object Relational Mapping) เป็นของตัวเอง มีชื่อว่า Django ORM ซึ่งตัว ORM นี้ช่วยให้เราไม่ต้องเขียน SQL โดยสามารถติดต่อกับ Database โดยใช้ภาษาไพธอนได้เลย และไม่ต้องใช้ตัว ORM จากภายนอกเหมือน Flask
  • มีไลบรารี่มาตรฐานต่าง ๆ เพื่อนำมาประยุกต์ใช้งานกับ Django Framework มากมาย
  • ตอนนี้ Django มีไลบรารี่ในการจัดการกับ WebSockets ที่รองรับการสร้าง Real Time Web Application แล้วครับ โดยมีชื่อว่า Channels
  • อื่น ๆ

จุดด้อย

  • มีอิสระในการเขียนที่น้อยกว่า Flask เพราะต้องเขียนตามโครงสร้างและแพทเทิร์นของ Django ดังนั้นความยืดหยุ่นจึงน้อยกว่า Flask
  • ไม่เหมาะกับโปรเจคท์เล็ก ๆ 
  • ต้องคอนฟิกเยอะ ถ้าเป็นมือใหม่อาจจะงงได้


    Flask


    จุดเด่น

    • ง่ายในการเรียนรู้ เพราะมีโครงสร้างที่ไม่เยอะและซับซ้อนเหมือนเฟรมเวิร์คตัวอื่น ๆ เช่น Django โดย Flask สามารถจบงานโดยการเขียนโค้ดไม่กี่บรรทัดและไม่กี่ไฟล์
    • สามารถเลือกที่จะเขียนติดต่อกับ Database โดยใช้ Raw SQL(เขียน SQL ตรง ๆ) หรือเขียนโดยใช้ ORM(ตัวที่นิยมคือ SQLAlchemy) ซึ่งจะยืดหยุ่นกว่า Django ที่แทบจะเขียนโดยใช้ Django ORM เกือบทั้งหมด
    • เป็นหนึ่งในเฟรมเวิร์คด้าน Web Development ที่ได้รับความนิยมสูงมากตีคู่มากับ Django (จำนวน stars ใน GitHub เยอะกว่า Django เสียอีก)
    • มีอิสระในการเขียน เพราะว่าไม่มี Tools อะไรมาให้เยอะและเพรียบพร้อมเหมือนเฟรมเวิร์คตัวอื่น ๆ เราจึงเลือกได้ว่าจะเขียน ไปในแนวทางไหนตามใจชอบ มีความยืดหยุ่นสูง
    • มี Resources ให้ศึกษาเยอะ เพราะว่าเป็นเฟรมเวิร์คที่ได้รับความนิยม ดังนั้นจึงมีคนศึกษาเยอะ ติดเออเร่อตรงไหน stackoverflow ก็มีคำตอบให้เป็นส่วนใหญ่ เพราะว่ามีคนเจอปัญหาเหมือน ๆ กัน ดังนั้น จึงไม่ต้องห่วงว่าจะไปไม่ถูก
    • มีไลบรารี่ เช่น SocketIO ที่เป็น WebSockets สามารถที่จะนำไปสร้างเป็น Real Time Web App เช่น รับค่าจากเซ็นเซอร์ IoT แล้วนำมาแสดงผลบนหน้าแดชบอร์ด หรือทำโปรแกรมแชทแบบต่าง ๆ

    จุดด้อย

    • ไม่ได้มี Tools มาให้ครบครันเหมือน Django
    • ด้วยความที่มีอิสระในการเขียน ดังนั้นเมื่อโปรเจคท์เริ่มใหญ่ขึ้นก็อาจจะทำให้จัดการได้ยากทำให้ขาดมาตรฐาน (แต่ถ้าจัดการและออกแบบดี ๆ ก็ไม่มีปัญหา)
    • ไม่เหมาะกับโปรเจคท์ใหญ่ ๆ


    เปิดโลกการเขียนโปรแกรมและ Software Development ด้วย online courses ที่จะพาคุณอัพสกิลและพัฒนาสู่การเป็นมืออาชีพ เรียนออนไลน์ เรียนจากที่ไหนก็ได้ พร้อมซัพพอร์ตหลังเรียน

    เรียนเขียนโปรแกรม