หลาย ๆ คนเมื่อเริ่มศึกษาภาษาไพธอนและกำลังต้องการต่อยอดและประยุกต์ใช้งาน หลังจากที่มีพื้นฐานไพธอนกันมาบ้างแล้ว และกำลังมองหาเฟรมเวิร์คดี ๆ ในงานด้าน web develoopment สักตัว ซึ่งไพธอนก็มีเว็บเฟรมเวิร์คยอดนิยมอยู่หลายตัว
Popular Python web frameworks
บทความนี้ขอนำเสนอ Django ซึ่งเป็นเฟรมเวิร์คที่สาวกไพธอนคงคุ้นเคยกันเป็นอย่างดี เพราะว่าได้รับความยอดนิยมสูงที่สุดของไพธอนในการพัฒนาเว็บ วันนี้มาดูกันครับว่า มีเหตุผลอะไรบ้างทำไมเราถึงต้องเลือก Django มันมีดีอะไรหนักหนา !!
อวย Django สุดลิ่มทิ่มประตูแน่นอนบทความนี้ lol ล้อเล่นครับ ไปอ่านพร้อม ๆ กันเลย แล้วคุณจะหลงรัก Django
1. ความยอดนิยมสูง
Django คือเฟรมเวิร์คที่ได้รับความนิยมสูงสุดของ Python และยังเป็นหนึ่งใน back-end เฟรมเวิร์คที่ได้รับความยอดนิยมอันดับต้น ๆ ของโลก โดยสามารถดูได้จากสถิติและผลสำรวจต่าง ๆ ในแต่ละปี และในปีล่าสุดคือปี 2020 ครองอันดับ 1 back-end framework จาก stackshare.ioเว็บไซต์ชื่อดังด้านโปรแกรมมิ่งอีกเว็บ รวมไปถึงผลสำรวจต่าง ๆ ไม่ว่าจะเป็น Stackoverflow Developers Survey ทาง Django ก็อยู่ในลิสต์ลำดับแรก ๆ
ตัวอย่างดังภาพด้านล่าง ลองค้นหาบน Google ด้วยคำว่า “popular back-end frameworks” ซึ่ง Django แสดงผลในลำดับแรกที่ Google แนะนำ

2. Built-in Admin site
นี่คือหนึ่งฟีเจอร์ไม้ตายเด็ดอีกตัวของ Django เลยก็ว่าได้ คือมีหน้าแอดมินพร้อมใช้งานเสร็จสรรพ ลองจินตนาการว่า ถ้าต้องสร้างระบบ admin ขึ้นมาเอง ต้องลงแรงและใช้พลังงานไปเยอะแน่ ๆ

3. มี documentation ที่สุดยอด
อีกหนึ่งความยอดเยี่ยมและน่าประทับใจของ Django ก็คือ การมี documentation ที่ยอดเยี่ยม ละเอียดยิบ ทันสมัย อัปเดตอยู่ตลอดเวลา ทำให้นี่คืออีกหนึ่งจุดเด่นที่เป็นตัวชูโรงให้กับ Django เลยก็ว่าได้เพราะว่า การที่จะศึกษาเฟรมเวิร์คอะไรสักอย่าง docs ก็เป็นอีกหนึ่งแหล่งศึกษาที่เอาไว้ใช้ทั้งอ้างอิงและศึกษาไปพร้อม ๆ กัน ซึ่งถ้ามี docs ที่ยอดเยี่ยม ก็ยิ่งจะทำให้เราอุ่นใจได้มากยิ่งขึ้นเท่านั้น

4. Versatile
Django สามารถทำโปรเจคท์ได้หลายแนว ไม่ว่าจะเป็นรูปแบบปกติของ Django คือ Server Side Rendered (SSR) คือทำเว็บไซต์ หรือไม่ว่าจะเป็นการทำ Single Page Application (SPA) ที่เป็นรูปแบบ modern เว็บยอดนิยมในปัจจุบันก็สามารถทำได้โดยการประยุกต์ใช้กับ front-end frameworks ยอดนิยมอื่น ๆ ไม่ว่าจะเป็น React, Angular, Vue, etc สามารถทำได้แบบไร้ปัญหาใด ๆ หรือรวมไปถึงระบบ CMS (Content Management System) Django ก็มี Wagtail ซึ่งเป็น CMS ยอดนิยมสุดของ Django ให้ต่อยอดศึกษาได้เช่นกัน
5. Built-in Authentication
ระบบ authentication systems เช่น การ log in, log out, หรือ register เป็นต้น Django มีมาให้ครบหมดแล้ว โดยเราไม่ต้องสร้างมันมาจาก 0 เราสามารถ implement ต่อได้ทันที

6. ความปลอดภัยสูง
ช่องโหว่ทางด้านความปลอดภัยต่าง ๆ ที่เว็บโดยทั่วไปอาจจะถูกโจมตีจากผู้ไม่หวังดีได้นั้น ไม่ว่าจะเป็น XSS and CSRF attacks, SQL injections, clickjacking ,etc โดย Django มีระบบป้องกันการโจมตีด้วยวิธีการเหล่านี้รวมอยู่ในเฟรมเวิร์คให้แล้ว รวมไปถึงการมี password hash มาให้ในตัว

Django นั้นเมื่อ password ได้ถูกสร้างขึ้นมาจะถูก hash ให้ในตัวด้วยอัลกอริทึม sha256
7. MTV Design Patterns
Django เป็นเฟรมเวิร์คที่อยู่บนพื้นฐาน MTV ซึ่งอยู่ในประเภทเดียวกันกับ MVC เฟรมเวิร์คค่ายอื่น ๆ เช่น Laravel, Rails, etc ช่วยให้การพัฒนาโปรเจคท์เป็นไปอย่างมีระบบ มีโครงสร้างที่เป็นมาตรฐาน คุยกับคนอื่นรู้เรื่องแน่นอน
8. ORM ไม่ต้องเขียน Raw SQL
ปกติการเชื่อมต่อสื่อสารกับฐานข้อมูลต้องมีความรู้ความเข้าใจภาษา SQL แต่สำหรับ Django นั้นจะใช้ ORM (Object Relational Mapping) คือเขียน class/object ของไพธอนในการติดต่อฐานข้อมูลแทน ทำให้เพิ่มความรวดเร็วในการพัฒนามากยิ่งขึ้น แต่อาจจะแลกมาด้วย performance ที่ช้าลงเพราะต้องแปลงไปเป็น raw SQL อีกที แต่ก็สามารถ optimize ได้
ตัวอย่างด้านล่างเป็นการเปรียบเทียบระหว่างการเขียนแบบ raw SQL ปกติและการเขียนแบบไม่ต้องใช้ SQL คือใช้ Python ในการเขียนเพื่อสร้างตารางในฐานข้อมูลได้เลย
Raw SQL
CREATE TABLE "task" (
"id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
"title" varchar(80) NOT NULL,
"description" text NOT NULL,
"date_created" datetime NOT NULL,
"completed" bool NOT NULL
)
Django ORM
class Task(models.Model):
title = models.CharField(max_length=80)
description = models.TextField()
date_created = models.DateTimeField(auto_now_add=True)
completed = models.BooleanField()
ปล. Django จะ generate ฟีลด์ id หรือ Primary Key ให้อัตโนมัติ
9. ดีต่อ SEO
Django เป็นเฟรมเวิร์คแนว SSR (Server Side Rendered) ซึ่งทำให้การทำ SEO(Search Engine Optimization) คือ Django นี่เอื้อต่อการรองรับการทำเว็บที่ดี SEO หมายถึงการทำให้เว็บของเรามาติดอันดับหน้าแรก ๆ ของ Google ซึ่งโดยปกติแล้วมักจะหมายถึงหน้าแรกเลย
คือถ้าเว็บของเราติดหน้าแรก นั่นก็หมายถึงโอกาสทางธุรกิจที่มากยิ่งขึ้นทวีคูณ เพราะคนเข้าเว็บเยอะก็จะเจอโปรดักส์หรือเซอร์วิสของเราเยอะ จนนำไปสู่การซื้อขายในท้ายที่สุดโปรดักส์หรือบริการ
ตัวอย่างด้านล่างจากเว็บ Stackpython ที่คุณกำลังอ่านบทความอยู่ในขณะนี้ โดยพัฒนาด้วย Django ก็มีความสามารถที่จะทำให้บทความติดหน้าแรกของ Google ได้ แต่จริง ๆ แล้วการทำให้เว็บติดหน้าแรกนั้นมีหลายปัจจัย แต่อย่างน้อยที่สุด ให้คุณอุ่นใจได้ว่า Django นั้นเป็นเฟรมเวิร์คที่เหมาะกับการทำเว็บไซต์และดีต่อ SEO อย่างแน่นอน

10. มีแหล่งเรียนรู้เยอะ
แน่นอนว่า Django เป็นหนึ่งในเฟรมเวิร์คที่มีชื่อเสียงและได้รับความนิยมมากที่สุดเฟรมเวิร์คหนึ่งของไพธอน ดังนั้นจึงมีคนมาก ๆ ทั่วโลกที่ได้ศึกษามาก่อนหน้าเรา และกำลังเรียนรู้ไปพร้อม ๆ กันกับเรา ไม่ต้องสงสัยเลยว่ามีบทความ Tutorials เกี่ยวกับ Django มากมายบนแพลตฟอร์มต่าง ๆ หรือคลิปสอนใน YouTube เป็นต้น
ดังตัวอย่างภาพด้านล่าง ขนาด CS50 สำนักคอมพิวเตอร์ชื่อก้องโลกแห่งมหาวิทยาลัยฮาวาร์ด ยังใช้สอนนักศึกษา !!

Brian Yu ศิษย์เอกของ Prof. David J. Malan กำลังสอน Django
credit youtube channel: CS50
11. ต่อยอดทำ API ด้วย Django REST Framework
สามารถนำ Django ไปต่อยอดพัฒนาเป็น web APIs, web services ต่าง ๆ ได้อย่างสบาย ๆ ด้วย toolkit สุดฮิตของ Django อย่าง Django REST Framework (DRF) ซึ่งเมื่อเราสามารถทำ website ได้แล้วนั้น การทำ web APIs ก็เป็นอีกหนึ่งสกิลที่ควรต้องศึกษาหากต้องการต่อยอดในระดับสูงขึ้น

บทความแนะนำ: Django REST Framework – สร้าง API ด้วยไพธอนฉบับเต็ม
12. ประยุกต์ใช้งานร่วมกับ Data Science, AI & Machine Learning
เพราะว่า Django เป็นเฟรมเวิร์คที่ถูกเขียนขึ้นมาโดยภาษาไพธอน และแน่นอนว่าไพธอนแทบจะเรียกได้ว่าเป็นภาษายอดนิยมอันดับ 1 ทางด้าน Machine Learning ดังนั้นตัวไลบรารี่ด้าน Machine Learning เช่น TensorFlow, Keras, PyTorch เราสามารถที่จะสร้างโมเดลขึ้นมาแล้วนำมาประยุกต์ใช้กับเว็บของเราได้ ข้อนี้คืออีกหนึ่งข้อได้เปรียบของ Python web frameworks เลยก็ว่าได้
Django Disadvantages
แน่นอนว่า Django ก็ใช่ว่าจะมีแต่ข้อดีทั้งหมด คราวนี้มาพูดถึงจุดด้อยบางอย่างของ Django กันครับ
- ไม่เหมาะกับ Microservices เพราะ Django ค่อนข้าง monolithic
- เครื่องมือเยอะเกินไป บางสิ่งบางอย่างก็ไม่ได้ใช้ ทำให้สิ้นเปลืองทรัพยากร และต้อง deploy ไปด้วยกันทั้งหมด
- Performance อาจจะช้าเมื่อเทียบกับเฟรมเวิร์คของภาษาอื่น ๆ เช่น Java, Go JavaScript(Node.js), etc