โพสต์เมื่อ 1 ปี, 6 เดือน ago | มีผู้อ่านทั้งหมด 909 คน
หลังจากเราได้ทำการเริ่มหน้าแรกของเว็บดูหนังออนไลน์ด้วย Django และ คัดลอกตัวเทมเพลตดูหนังออนไลน์สำหรับจะใช้ในโปรเจคนี้กันไปใช้แล้ว ขั้นตอนต่อไปเป็นขั้นตอนในการสร้างสิ่งที่เรียกว่า Object ในระบบของ เว็บดูหนังออนไลน์ของเราครับ จริงๆ มันก็จะคล้ายๆ กับแนวติดของ OOP หรือ object-oriented programming ที่เขียนทุกอย่าง อย่างเป็นลำดับและมีความเกี่ยวเนื่องกัน
หากจะให้ยกตัวอย่างก็อาจจะเหมือน เด็กหนึ่งคน ที่ประกอบไปด้วย เลขประจำตัวประชนชน อายุ สีผิว และที่อยู่ของบ้าน หรืออาจจะยกตัวอย่างไกลไปนะ..
Kids
______
Name
Ages
Address
ถ้าเป็นโปรเจคหนังของเรา หนังหนึ่งเรื่องในนี้ก็จะประกอบไปด้วยข้อมูลดังนี้
Movie
______
title
description
images
category
created_date
ซึ่งถ้าเริ่มมีความเข้าใจในส่วนนี้เบี้องต้นแล้วเราก็ไปต่อกันได้เลย แต่ใน Django มีข้อพิเศษตรงที่ว่า ทุกครั้งที่เรามีการอัพเดทหรือสร้างโมเดลต่างๆ ภายในบล็อก มันจะส่งผลไปยังฐานข้อมูลด้วย ทำให้การพัฒนาระบบต่างๆ ของเราสามารถทำได้อย่างสะดวกมากขึ้น.. โดยรูปแบบถ้ามองเป็นในมุมของตารางก็จะอยู่ประมาณนี้
ต่อไปให้เราเข้าไปใน env ของเราเหมือนเดิม... ถ้าจำไม่ได้ว่าเข้ายังไงให้ดูในบทความก่อนหน้านี้ แล้วเราจะใช้คำสั่ง python manage.py startapp movie ตามตัวอย่างด้านล่างนี้
python manage.py startapp movie
หลังจากสร้างเสร็จแล้วไฟล์ของเราจะมีลักษณะประมาณนี้ หรือก็คือจะมีโฟลเดอร์ movie เพิ่มขึ้นมานั่นเองครับ
├───movie
│ └───migrations
└───moviesite
└───__pycache__
ขั้นตอนต่อไปให้เราเข้าไปที่ movie/models.py เพื่อที่จะทำการแก้ไขไฟล์ โดยเมื่อเข้ามานั่นจะเป็นไฟล์โล่งๆ ให้ใส่ของมูลดังนี้
from django.db import models
from django_resized import ResizedImageField
# Create your models here.
class Movie(models.Model):
title = models.CharField(max_length=255,verbose_name="ชื่อบทความ")
image = ResizedImageField(size=[500, 300],crop=['middle', 'center'],upload_to="movie", blank=True, null=True)
description = models.CharField(max_length=255,default="กรุณาระบุรายของหนัง")
category =models.CharField(max_length=255,default="กรุณาระบุหมวดหมู่")
view = models.IntegerField(default=0)
created_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
สรุปง่ายๆ ให้เข้าใจก็คือเป็นการสร้างก้อนข้อมูลขึ้นมาและในข้อมูลชุดนี้ก็จะประกอบไปด้วยรายละเอียดของหนังเรื่องนั้นๆ ไม่ว่าจะเป็น ชื่อหนัง รูปภาพหนัง รายละเอียดของหนัง และ หมวดหมู่ของหนัง เป็นต้น
class Movie(models.Model): ## ส่วนนี้เป็นการสร้าง Object ขึ้นมาชื่อว่า Movie
models.CharField ## เป็นการกำหนดว่าจะให้ข้อมูลตัวนี้จัดเก็บเป็นรูปแบบของ ตัวอักษร
ResizedImageField ## เป็นการกำหนดว่าจะให้ข้อมูลตัวนี้จัดเก็บเป็นรูปแบบของ รูปภาพ
models.IntegerField ## เป็นการกำหนดว่าจะให้ข้อมูลตัวนี้จัดเก็บเป็นรูปแบบของ ตัวเลขจำนวนเต็ม
models.DateTimeField ## เป็นการกำหนดว่าจะให้ข้อมูลตัวนี้จัดเก็บเป็นรูปแบบของ เวลาและวันที่
def __str__(self):
return self.title ## ส่วนนี้เป็นการบอกว่าให้โปรแกรมของเราทำการส่งค่าของ ชื่อหนังกลับมา
หลังจากทำความเข้าในเรื่องของ Models กันได้เบื้องต้นแล้ว ต่อไปก็จะเป็นการนำ Models ที่เราออกแบบไว้ไปใส่ในฐานข้อมูลกันครับ โดยทั้งนี้ไม่ต้องมีความรู้เรื่องภาษา SQL เราก็สามารถทำได้อย่างง่ายๆ โดยใช้คำสั่ง python manage.py makemigrations movie
อันดับแรกเราต้องไปแก้ไขให้โปรเจค Django ของเรารู้ว่ามีการเพิ่ม App Movie เข้ามาก่อน โดยไปที่ settings.py ที่เคยทำกันก่อนหน้านี้
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'movie', ##เพิ่มบรรทัดนี้ลงไป
]
จากนั้นให้ใช้คำสั่ง python manage.py makemigrations movie เพื่อให้ระบบของ Django เริ่มสร้างไฟล์สำหรับส่งไปที่ฐานข้อมูล
(env) C:\movieproject>python manage.py makemigrations movie
Migrations for 'movie':
movie\migrations\0001_initial.py
- Create model Movie
เนื่องจากมีการเพิ่มฟังก์ชั่นใหม่เข้ามาในเรื่องของการ Resize รูปภาพก่อนอัพโหลดขึ้นไป อาจจะทำให้หลายๆ ท่านไม่มีสามารถรันได้ สามารถแก้ปัญหาได้โดยติดนั้น django_resized โดยพิมพ์ pip install django_resized
และขั้นตอนสุดท้ายเพื่อให้สามารถสร้างฐานข้อมูลได้อย่างสมบูรณ์ เราจะต้องใช้คำสั่ง python manage.py migrate movie ซึ่งหน้าตาก็จะออกมาประมาณนี้
(env) C:\movieproject>python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, movie, sessions
Running migrations:
Applying movie.0001_initial... OK
(env) C:\movieproject>
โดยถ้าหากคุณมีโปรแกรมสำหรับเปิดฐานข้อมูลอยู่จะพบกับข้อมูล ประมาณนี้