django (ดี)จังโก้ ดีอย่างไร #01

ขอไม่ลงรายละเอียดว่า อะไรคือ Web Framework, MVC, MVT พวกนั้นนะครับ อ่านเองที่ https://www.djangoproject.com/ และ เขียนวิธีติดตั้งบน Windows ไว้คร่าว ๆ ที่ ขั้นตอนการติดตั้ง django บน Windows และในที่นี้ใช้ Visual Studio Code เป็น Editor (สั่งด้วยคำสั่ง code …)

โจทย์

สมมุติในทีม มีคน 10 คน ต้องการ ระบบบันทึกการปฏิบัติงาน

  1. จัดเก็บข้อูล วันเวลาของงานที่ทำ, ประเภทของงงาน (ตาม TOR), รายละเอียดของงานที่ทำ, ระยะเวลาที่ใช้ไป (ชั่วโมง)
  2. แต่ละคน ต้อง Login เข้ามาก่อน จึงจะบันทึกปฏิบัติงานได้

วิถีแบบ django

สร้าง project ชื่อ myproject

django-admin startproject myproject

สร้าง App ชื่อ worklog

cd myproject
python manage.py startapp worklog

สร้าง Model ว่าจะเก็บข้อมูลอะไรบ้าง

แก้ไขไฟล์

code worklog/models.py

แล้วสร้าง Class ชื่อ Worklog เพื่อกำหนด Field เป็นช่องทางการเก็บค่าตามโจทย์ (Reference: https://docs.djangoproject.com/en/2.1/ref/models/fields/)
–> ขั้นตอนนี้ เขียนใน Visual Studio Code เสร็จแล้ว Save and Exit

from django.db import models
from django.utils.timezone import now

# Create your models here.
class Worklog(models.Model):
    timestamp = models.DateTimeField(default = now())
    typeOfWork = models.ForeignKey('TypeOfWork', on_delete=models.CASCADE)
    work_text = models.TextField(default="")
    manhour = models.FloatField(default=0)
    def __str__(self):
        return self.work_text

class TypeOfWork(models.Model):
    typeOfWork_text = models.CharField(max_length=200)
    def __str__(self):
        return self.typeOfWork_text

บอกให้ django สร้างโครงสร้างฐานข้อมูลตามโมเดล (จาก Command Prompt)

python manage.py migrate

เพิ่ม App ‘worklog’ เข้าสู่ myproject

แก้ไขไฟล์

code myproject/settings.py

เพิ่ม ‘worklog’ ในส่วนของ INSTALLED_APPS
–> ขั้นตอนนี้ เขียนใน Visual Studio Code เสร็จแล้ว Save and Exit

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'worklog'
]

สร้าง Super User สักคนนึง

python manage.py createsuperuser

ตั้งชื่อว่า admin และ รหัสผ่านตามต้องการ

เพิ่มโมเดล TypeOfWork และ WorkLog เข้าสู่หน้าของ Admin โดยการแก้ไขไฟล์
–> ขั้นตอนนี้ เขียนใน Visual Studio Code เสร็จแล้ว Save and Exit

code worklog/admin.py

ดังนี้

from django.contrib import admin

# Register your models here.
from .models import TypeOfWork, Worklog
admin.site.register(TypeOfWork)
admin.site.register(Worklog)

สั่ง Run Server

สั่งที่ Command Prompt

python manage.py runserver

แล้วเปิด Web Browser ไปที่
http://127.0.0.1:8000/admin/

ใส่ Login และ Password ของ admin ทั้งตั้งไว้ก่อนหน้านี้

เริ่มต้นใช้งาน

เพิ่มประเภทของงาน

คลิก Type of works — django พยายามใส่ s ให้ด้วยอัตโนมัติ
คลิกที่ปุ่ม ADD TYPE OF WORK
เพิ่มประเภทของงาน วนไป
เสร็จแล้วได้ผลประมาณนี้ อยากจะ Edit Delete ได้หมด

เพิ่มบันทึกการปฏิบัติงาน

คลิกที่ Add ในส่วนของ Worklogs

มี Form สำหรับ Input ทันที

สวยงาม ไม่ต้องทำอะไรเพิ่ม เลือก Type of works ได้ ช่องวันที่ เวลา ก็มี Widget ให้เรียบร้อย
แก้ไขไป มี History ให้ด้วย

จากนั้น ก็เพิ่มคนเข้าทีม ด้วยเมนู Users ได้

ระบบ Security พร้อม

User01 ตั้งค่าให้เป็น Worklog > Can Add Worklog
ก็จะทำได้แค่เข้ามาบันทึกปฏิบัติงานเท่านั้น

สรุป

จะเห็นได้ว่า ด้วยการสร้างโมเดลเล็กน้อย django ก็สามารถสร้างระบบ User Entry ง่าย ๆ ที่มาพร้อม Security Features มากมายได้แล้ว ยังมีรายละเอียดอีกเยอะ โดยเฉพาะในส่วนของ View/Template ที่จะสร้าง User Input และการออกรายงานต่าง ๆ รวมถึง การสร้าง API และ RESTful API หรือ จะผูกกับ OAuth2 ก็ยังได้

หวังว่าเป็นประโยชน์ครับ