สวัสดีครับวันนี้ Stackpython จะมาแนะนำให้รู้จัก Software-as-a-Service ตัวหนึ่งที่มีชื่อว่า Cloudinary ที่จะช่วยให้เราสามารถ เก็บไฟล์ Media ต่างๆไม่ว่าจะเป็นรูปภาพ หรือ วิดิโอ ของเราขึ้นไปเก็บไว้บน Cloud ได้อย่างง่ายดาย เพียงไม่กี่ขั้นตอนซึ่งจะช่วยให้การพัฒนาโปรเจคท์ของเรามีความเร็ว และประหยัดการทำงานของ server ได้เป็นอย่างดี
Cloudinary คือ Software-as-a-Service หรือ บริการซอฟต์แวร์บนอินเทอน์เน็ตที่ทำให้เราสามารถนำมาใช้งานได้ทุกที โดยหน้าที่หลักของ Cloudinary คือการจัดเก็บ Media ต่างๆ ให้กับเว็บไซต์ แอปพลิเคชั่น หรือโปรเจคต่างๆ แทนที่ จะเก็บลงในตัว Server หรือเก็บลงในโฟลเดอร์ของเรา และความสามารถอีกอย่างของ Cloudinary คือ เราสามารถปรับแต่งขนาด สี เอฟเฟคของรูปภาพได้ง่ายๆ ผ่านตัว Cloudinary เลย
Cloudinary มีลูกค้ามากกว่า 7,500 คน และ นักพัฒนาระบบอีกกว่า 900,000 คนที่ใช้งานอยู่
สำหรับ Cloudinay มีบริการให้เราเลือกใช้งานทั้งแบบฟรี และ เสียค่าบริการแบบรายเดือน
และ Cloudinary ยังรองรับ Framework ต่างๆ อีกมากมายด้วย
โดยในวันนี้เราจะลองใช้ Cloudinary กับ Django ของเรากันนะครับ
ก่อนอื่นไปที่ https://cloudinary.com ทำการสมัครสมาชิกให้เรียบร้อย
แล้วทำการ login เราก็จะได้ cloud สำหรับเก็บ Medie ต่างๆ ไว้ใช้งานแล้ว ง่ายมาก
ลองเอาไฟล์รูปต่างๆ ลงไปเก็บได้เลย
สามารถปรับแต่งรูปได้ง่ายๆ เพียงกด Manage ที่รูป
ต่อไปเราจะมาลองใช้ Cloudinary กับ project Django ของเรากัน
โดยปกติแล้วหากใครที่เคยเขียน Django จะทราบดีว่าหากเราต้องการเก็บไฟล์เหลือเรียกใช้ไฟล์ Static Media ต่างๆ เราจำเป็นต้องมีการตั้งค่า ให้กับ Project ของเรา ตามนี้
project/ursl.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
settings.py
STATIC_URL = '/static/'
STATICFILES_DIRS = [Path.joinpath(BASE_DIR, 'blog/static')]
STATIC_ROOT = Path.joinpath(BASE_DIR, 'staticfiles')
MEDIA_URL = '/media/'
MEDIA_ROOT = Path.joinpath(BASE_DIR, 'blog/static/media')
ทดสอบสร้าง model ชื่อ TablesNews สำหรับเก็บไฟล์รูปภาพ โดยจะเก็บลงใน โฟลเดอร์ชื่อ photo
from django.db import models
# Create your models here.
class TablesNews(models.Model):
news_photo = models.ImageField(upload_to='photo', default='')
จะเห็นว่าไฟล์รูปของเราจะถูกเก็บลงใน static\media\photo
ที่นี้เราจะมาเปลี่ยนให้ Django เปลี่ยนที่เก็บไฟล์จากในโฟลเดอร์ ไปเก็บไว้บน Cloud แทน
วิธีการทำก็ง่ายมาก
อ่านเพิ่มเติมได้ที่ cloudinary-django
อันดับแรกให้เรา install library ชื่อ cloudinary และ django-couldinary-storage
$ pip install cloudinary
เสร็จแล้วติดตั้งอีกหนึ่งตัว
$ pip install django-cloudinary-storage
จากนั้นก็ทำรีจิสเตอร์แอปใน INSTALLED_APPS[]
ทำการเพิ่ม cloudinary_storage
และ cloudinary เข้าไป
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
'cloudinary_storage',
'cloudinary',
]
ด้านล่างของไฟล์ settings.py ให้เราทำการเพิ่ม Code ตามนี้ลงไปได้เลย
CLOUDINARY_STORAGE = {
'CLOUD_NAME': 'xxxxx',
'API_KEY': 'xxxxx',
'API_SECRET': 'xxxxxx'
}
DEFAULT_FILE_STORAGE='cloudinary_storage.storage.MediaCloudinaryStorage'
ต่อไปเราต้องการใส่ค่าของ CLOUD_NAME / API_KEY และ API_SECRET
วิธีก็ง่ายมากให้เรากลับไปที่ https://cloudinary.com
กดไปที่ DashBoard นำ CLOUD_NAME / API_KEY และ API_SECRET มากรอกได้เลย
ทดสอบเพิ่มรูปอีกครั้ง
เราจะเห็นว่ารูปของเราได้ถูกโยนไปเก็บไว้ที่ Cloudinary แล้ว
เท่านี้เราก็สามารถใช้งาน Cloudinary ได้แล้ว
กิจกรรมที่กำลังจะมาถึง
ไม่พลาดกิจกรรมเด็ด ๆ ที่น่าสนใจ
Event นี้จะเริ่มขึ้นใน April 25, 2023
รายละเอียดเพิ่มเติม/สมัครเข้าร่วมคอร์สเรียนไพธอนออนไลน์ที่เราได้รวบรวมและได้ย่อยจากประสบการณ์จริงและเพื่อย่นระยะเวลาในการเรียนรู้ ลองผิด ลองถูกด้วยตัวเองมาให้แล้ว เพราะเวลามีค่าเป็นอย่างยิ่ง พร้อมด้วยการซัพพอร์ตอย่างดี