การติดตั้ง django
django คืออะไร
Django อ่านว่า “จังโก้” คือเว็บเฟรมเวิร์คที่พัฒนาขึ้นโดยใช้ภาษา Python โดยเริ่มต้นนั้นมีวัตถุประสงค์เพื่อใช้เป็นระบบ CMS (Content Management System) ของระบบรายงานข่าว เพื่อช่วยให้การนำเสนอข่าวสารทำได้รวดเร็วทันต่อเหตุการณ์มากยิ่งขึ้น จากนั้นมันผ่านการปรับปรุงความสามารถมาอย่างต่อเนื่องจนถึงปัจจุบัน ซึ่งตอนนี้คือเวอร์ชั่น 1.9 แล้ว
ใครใช้ django บ้าง?
เราใช้จังโก้ทำงานด้านเว็บแอพลิเคชั่นได้เกือบทุกอย่าง เช่น ทำเว็บไซต์ เพื่อใช้ประชาสัมพันธ์ข้อมูลข่าวสาร หรือทำเว็บอีคอมเมิร์ชสำหรับซื้อ-ขายสินค้า ที่ประกอบด้วยหน้าร้าน สต็อค และการรับชำระเงินก็ได้ หรือแม้กระทั่งใช้เป็นระบบ backend เพื่อเป็นเว็บเซอร์วิสในการจัดการข้อมูลให้กับ frontend ต่างๆ ที่ร้องขอเพื่อเข้ามาใช้ข้อมูล เป็นต้น กล่าวโดยสรุปคือ เราใช้จังโก้ทำงานได้เกือบทุกอย่าง ซึ่งแล้วแต่ท่านผู้อ่านจะนำไปประยุกต์ใช้นั่นเอง
จุดเด่นของ django
ข้อเด่นของจังโก้ที่ทำให้เราชาวซีโร่สคูลอดใจไม่ไหวต้องนำเฟรมเวิร์คตัวนี้มาเขียนเป็นบทความ นั่นคือ
- เตรียมระบบ Admin มาให้เรียบร้อยแล้ว: ปกติแล้วเมื่อเราทำเว็บแอพลิเคชั่น มักจะประกอบด้วยระบบหน้าบ้าน (frontend) สำหรับแสดงข่าวสาร สินค้าและบริการ ให้ผู้ใช้เห็น และระบบหลังบ้าน (backend) มีไว้สำหรับ admin ใช้จัดการข้อมูลข่าวสารเหล่านั้น สมมติว่าแต่เดิมงานทั้งหมดที่เราต้องทำแบ่งเป็น 50% เป็นหน้าบ้านและที่เหลือเป็นหลังบ้าน ถ้าหากจังโก้เตรียมหลังบ้านมาให้เราแล้ว เราอาจจะใช้เพียงแค่ 20% สำหรับการปรับแต่ง ทำให้เราประหยัดเวลาไปได้ถึง 30% เลยทีเดียว
- เตรียมเครื่องมือที่จำเป็นอย่างครบครัน: จังโก้เตรียมเครื่องมือที่จำเป็นให้เราอย่างครบครัน อาทิเช่น ระบบจัดการข้อมูล (models), ระบบแสดงผล (views), ระบบส่งอีเมล์, ระบบล็อกอิน/ล็อกเอาต์, ระบบจัดการ user, group และ permission เป็นต้น ด้วยข้อดีแบบนี้ ทำให้เราประหยัดเวลาในการตระเตรียมเครื่องมือ และการขึ้นโครงของโปรแกรมลงไปได้มาก
- มี editor พร้อมกับ plugins ให้เลือกอย่างมากมาย: เราสามารถใช้ text editor พัฒนาจังโก้ได้เกือบทุกค่าย เช่น sublime text, atom, visual studio code, .NET, pycharm หรือแม้แต่ notepad++ เป็นต้น ดังนั้นท่านสามารถใช้อีดีเตอร์ที่คุ้นเคยพัฒนาโปรแกรมได้ทันที นอกจากนั้นแล้วในบางอีดิเตอร์ยังได้เตรียมปลั๊กอินสำหรับจังโก้โดยเฉพาะ อาทิเช่น sublime, pycharm, visual studio code และ atom เป็นต้น ท่านที่ใช้อีดิเตอร์ดังกล่าวอยู่แล้ว ก็สามารถค้นหาปลั๊กอินที่เกี่ยวกับจังโก้ และทำการติดตั้งได้เลย
- เอกสารและการช่วยเหลือเมื่อติดปัญหา: หากท่านติดปัญหาในการใช้งาน สามารถเข้าไปที่เว็บไซต์ www.djangoproject.com ซึ่งเป็นเว็บไซต์อย่างเป็นทางการของจังโก้ ซึ่งมีเอกสารให้อ่านอย่างมากมายและมีการจัดวางเนื้อหาอย่างเป็นระบบ เพื่อให้ท่านทำความเข้าใจได้ง่าย นอกจากนั้นแล้วท่านสามารถนำปัญหาต่างๆ เข้าไปค้นหาในกูเกิ้ล ซึ่งรับประกันว่าปัญหาที่ท่านพบเกี่ยวกับจังโก้ จะมีผู้เสนอแนวทางการแก้ไขให้อย่างแน่นอน
การติดตั้ง
เกริ่นมาก็พอสมควร ในตอนนี้เราจะมาติดตั้งจังโก้กันนะครับ เริ่มแรกเลยนะเครื่องของท่านจะต้องมี python ติดตั้งเสียก่อน หากท่านใดยังไม่ได้ติดตั้ง ให้ท่านเข้าไปดาวน์โหลดได้ที่ www.python.org เลือกเวอร์ชั่น 2.7.x นะครับ จากนั้นดำเนินการติดตั้งไปตามปกติ เมื่อติดตั้งเสร็จเรียบร้อยแล้วก็มาลุยกันต่อได้เลยครับ
virtualenv
เป็นตัวจำลองสภาพแวดล้อมของไพธอน ทำให้เราสามารถติดตั้งไลบรารี่ต่างเวอร์ชั่นกันได้ในเครื่องของเราเพียงเครื่องเดียว ก่อนอื่นต้องติดตั้ง virtualenv โดยการใช้คำสั่ง pip ดังต่อไปนี้
$ pip install virtualenvหลังจากติดตั้ง virutalenv เรียบร้อยแล้ว เราจะมาสร้าง box เพื่อเอาไว้รองรับการติดตั้งไลบรารี่ต่างๆ โดยมีรูปแบบคำสั่งคือ virtualenv [vbox name] จากนั้นเข้าไปใน vbox แล้วสั่ง activate ตามชุดคำสั่งดังต่อไปนี้
$ virtualenv vbox
$ cd vbox
$ Script\activate
$ (vbox)ถึงตอนนี้เราก็สามารถใช้ vbox นี้พัฒนาโปรแกรมโดยใช้จังโก้ได้แล้ว และหากเมื่อเลิกใช้ vbox ก็ควรที่จะทำการ deactivate โดยใช้คำสั่งดังต่อไปนี้
$ (vbox) deactivate $ติดตั้งจังโก้
หลังจากที่ท่านได้ติดตั้ง virtualenv และสั่ง activate แล้ว เราจะมาทำการติดตั้งจังโก้กัน วิธีการติดตั้งก็ทำได้อย่างง่ายดาย โดยมีรูปแบบคำสั่งที่ใช้ดังนี้ pip install django หรือในกรณีต้องการระบุเวอร์ชั่นก็ทำได้ดังนี้ pip install django==[version number]
$ (vbox) pip install djangoสร้างโปรเจ็กต์
เมื่อเราติดตั้งจังโก้เป็นที่เรียบร้อยแล้ว ขั้นตอนต่อมาเราจะมาสร้างโปรเจ็กต์กันนะครับ ขั้นตอนการเริ่มต้นโปรเจ็กต์ทำได้ไม่ยาก โดยการใช้คำสั่ง django-admin startproject [project name] ในตัวอย่างนี้เราจะสร้างโปรเจ็กต์ชื่อว่า “mydemo” โดยการใช้คำสั่งดังต่อไปนี้
$ (vbox) django-admin startproject mydemoเมื่อเสร็จเรียบร้อยท่านจะเห็นโฟลเดอร์ “mydemo” ปรากฏขึ้น เป็นอันว่าเราได้สร้างโครงของโปรเจ็กต์เสร็จแล้ว
ทดสอบการทำงานของเซิร์ฟเวอร์
โปรเจ็กต์จังโก้ที่เราสร้างจะมันจะมีตัว built-in เว็บเซิร์ฟเวอร์มาให้เราโดยอัตโนมัติ โดยที่เราไม่จำเป็นต้องไปหาเว็บเซิร์ฟเวอร์จากที่อื่นมาติดตั้งเพิ่ม คราวนี้เราจะมาสั่งให้ตัวเว็บเซิร์ฟเวอร์ของเราทำงาน โดยเข้าไปยังโฟลเดอร์ “mydemo” จากนั้นใช้คำสั่ง python manage.py runserver ซึ่งจะทำงานที่พอร์ต 8000 หรือหากต้องการใช้พอร์ตอื่น ก็สามารถระบบลงไปในคำสั่งได้เช่น python manage.py runserver [port number]
$ (vbox) cd mydemo
$ (vbox) python manage.py runserver
Django version 1.8.6, using settings 'mydemo.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.หลังจากเซิร์ฟเวอร์เริ่มทำงาน ให้ท่านเปิดเว็บเบราเซอร์แล้วพิมพ์ยูอาร์แอลที่ http://localhost:8000/ ท่านก็จะเห็นหน้าจอแสดงข้อความต้อนรับของจังโก้ตามภาพด้านล่าง เป็นอันเสร็จสิ้นขั้นตอนของการติดตั้ง

เริ่มต้นกับจังโก้
มาถึงตอนนี้หลายๆท่านคงติดตั้งจังโก้กันเรียบร้อยแล้ว ในหัวข้อนี้จะนำพาทุกท่านเข้ามาเริ่มเขียนโปรแกรมกันบ้าง โดยเขียนโปรแกรมเพื่อกล่าวสวัสดีทักทายตามธรรมเนียมของโปรแกรมเมอร์ เพื่อไม่ให้เป็นการเสียเวลา ให้ท่านเข้าไปยังโฟลเดอร์โปรเจ็กต์ mydemo จากนั้นให้สร้างไฟล์ชื่อ views.py แล้วเซฟไว้ที่ mydemo/views.py จากนั้นเขียนโค้ดโปรแกรมดังต่อไปนี้
from django.http import HttpResponsedef index(request):
return HttpResponse('hello World')
ให้ท่านเปิดไฟล์ mydemo/urls.py จากนั้นแทรกโค้ด เพื่อผูก views ที่เราสร้างให้จังโก้รู้จัก ตามโค้ดตัวอย่างดังต่อไปนี้

ทดสอบการทำงานของโปรแกรมโดยไปที่เบราเซอร์แล้วพิมพ์ยูอาร์แอล http://localhost:8000/ ท่านจะพบว่าเว็บไซต์ของเรามีการกล่าวทักทาย “Hello World” ออกมาทางหน้าจอ
อธิบายการทำงาน
เริ่มแรกเมื่อเราพิมพ์ยูอาร์แอลบนเบราเซอร์ไฟล์ มันจะส่ง request เข้ามายังไฟล์ urls.py จากนั้นกลไกของจังโก้จะทำการ match pattern ของยูอาร์แอล พบว่ายูอาร์แอลของเราที่พิมพ์เข้ามามันเข้ากัน (match) กับ expression r’^$’ มากที่สุด (เพราะเราไม่ได้พิมพ์คำว่า “admin” มาด้วย) ดังนั้นจังโก้จึงเรียกไปที่ views.index และเข้าไปสู่ไฟล์ views.py ที่ฟังก์ชั่น index ซึ่งไฟล์นี้จะ return คำว่า “Hello World” ออกไปยังหน้าจอนั่นเอง
การส่งพารามีเตอร์
เราจะมาพูดถึงการส่งพารามีเตอร์กันบ้าง โดยวิธีการรับส่งในกลไก http ของจังโก้มีหลายแบบเช่น GET, POST, PUT หรือ DELETE เป็นต้น แต่เราใช้จริงๆ ก็เพียง GET กับ POST เท่านั้น เพื่อไม่ให้เนื้อหายาวจนเกินไป ผมขออนญาตยกเรื่องของ POST ไปพูดในหัวข้ออื่น สำหรับตอนนี้ขออธิบายเรื่องของ GET แต่เพียงเรื่องเดียวไปก่อนครับ
วิธีการส่งพารามีเตอร์แบบ GET ทำได้สองแบบคือ ใช้ URL dispatcher กับใช้ request.GET
แบบแรก URL Dispatcher จะมีรูปแบบเป็น
http://www.someweb.com/param1/param2/ เหมาะกับระบบที่ผู้ใช้สามารถอ่านยูอาร์แอลได้ ยกตัวอย่างเช่น WordPress เมื่อเราดูบทความใดๆ ยูอาร์แอลที่แสดงจะสามารถอ่านเข้าใจได้ทันที ซึ่งมีประโยชน์มากกรณีทำ SEO เพื่อให้ลำดับที่ดีใน Google โดยจังโก้ของเราสามารถรับส่งพารามีเตอร์ชนิดนี้ได้ โดยเขียนโค้ดดังต่อไปนี้
แก้ไขไฟล์ mydemo/views.py
from django.http import HttpResponsedef index(request, myparam):
return HttpResponse('Hello World from "' + myparam + '"')
จากนั้นเพิ่ม r’^(?P<myparam>[\w]+)/$’ ลงไปใน mydemo/urls.py
from . import viewsurlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^(?P<myparam>[\w]+)/$', views.index, name='index'),
]

ก่อนอื่นให้ท่านสังเกต myparam ซึ่งเพิ่มเข้ามาทั้งใน views.py และ urls.py โดยใน views.py เราจะเพิ่มเข้ามาทางฟังก์ชั่น และนำ parameter ดังกล่าวไปใช้งานในการแสดงผลต่อไป ส่วน urls.py เราจะใช้ regular expression คือ (?P<myparam>[\w]+) คือการบอกจังโก้ว่าคำที่พิมพ์อยู่ในยูอาร์แอลให้จับมาใส่ในตัวแปรชื่อ myparam โดย [\w]+ หมายความว่าเป็นชนิดข้อความ (word) นั่นเอง
แบบที่สอง request.GET
จะมีรูปแบบโดยใช้หมาย ? และ & คั่นระหว่างพารามีเตอร์ ยกตัวอย่างเช่น http://www.someweb.com/?id=1&name=somchai ซึ่งรูปแบบนี้ทุกคนที่เป็นสายเว็บคุ้นเคยกันเป็นอย่างดี สำหรับจังโก้ของเรา สามารถรองรับพารามีเตอร์ชนิดนี้ได้อย่างไม่ยากเย็นมากนัก ซึ่งเขียนเป็นโค้ดโปรแกรมได้ดังต่อไปนี้
from django.http import HttpResponsedef index(request):
id = request.GET.get('id')
name = request.GET.get('name')
return HttpResponse('Hello World from ID=' + id + ' Name="' + name + '"')
urls.py (ไม่ต้องแก้)
from . import viewsurlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^$', views.index, name='index'),
]

สรุปท้ายบท
ในหัวข้อนี้เราได้มารู้จักกับจังโก้กันพอสมควรว่ามันคืออะไร มีประโยชน์ต่อพวกเราอย่างไรบ้าง? มีการติดตั้งโปรแกรมที่จำเป็นเช่น Python, virtualenv และติดตั้งตัวจังโก้อีกด้วย จากนั้นเราก็มาสร้างโปรเจ็กต์ สั่งให้เซิร์ฟเวอร์ทำงาน และหัวข้อสุดท้ายของบทนี้คือเรามาลองเขียนโปรแกรมส่งให้พิมพ์ข้อความออกมา ทั้งที่ไม่มีพารามีเตอร์และมีพารามีเตอร์ หวังว่าผู้อ่านคงจะเห็นภาพรวมๆ และพอเข้าใจการทำงานไม่มากก็น้อยนะครับ สำหรับหัวข้อถัดไป (ตอนที่ 2) เราจะมาพูดเกี่ยวกับ โมเดล (models), วิว (views) และเท็มเพลต (template) อย่างละเอียด และขอจบเนื้อหาในตอนนี้ก่อนครับ ขอบคุณที่ติดตามครับผม