django

پلتفرم Django

(Django Platform)

اتصال به ذخیره‌سازی ابری

بدون شک اتصال برنامه به یک ذخیره‌سازی ابری مطمئن برای نگهداری و ارائه فایل‌های استاتیک وب‌سایت یا داده‌های آپلود شده توسط کاربران، باعث اطمینان خاطر صاحبان کسب و کار و بهبود عملکرد برنامه‌ می‌شود.

فهرست عناوین:

در صورتی که تمایلی به خواندن آموزش متنی ندارید می‌توانید ویدیوی آموزشی زیر ‌را مشاهده کنید.

نصب AWS SDK

از آنجا که ذخیره‌سازی ابری لیارا یک سرویس Object storage سازگار با پروتکل S3 است، شما می‌توانید با استفاده از AWS SDK‌، در زبان‌ها و فریم‌ورک‌های مختلفی این فضای ذخیره‌سازی را مدیریت کنید. حال برای اتصال به ذخیره‌سازی ابری در Django باید با اجرای دستورهای زیر، پکیج boto3 و Django storages را نصب کنید.

pip install boto3
pip install django-storages

دریافت کلیدها

اگر باکت شما خصوصی باشد، برای دسترسی به باکت، نیاز به کلید دارید. برای ساخت کلید، به صفحه ذخیره‌سازی ابری رفته و طبق عکس‌ها کلیدخود را بسازید.

به قسمت کلیدها رفته:

یک کلید جدید بسازید.

کلیدهای ساخته‌شده را ذخیره کنید. توجه داشته‌باشید که SECRET_KEY تنها یک بار نمایش داده می‌شود و پس از آن باید کلید را درجایی مطمئن ذخیره کنید.

تنظیم متغیر‌های محیطی

در این مرحله باید کلیدها، نام باکت و endpoint لیارا را در فایل .env ذخیره کنید

LIARA_ENDPOINT=<Liara Bucket Endpoint>
LIARA_BUCKET_NAME=<Bucket Name>
LIARA_ACCESS_KEY=<Access Key>
LIARA_SECRET_KEY=<Secret Key>

لطفا توجه داشته‌باشید که باید هریک از مقادیر بالا را با متغیر های باکت‌خودتان‌ جایگزین کنید. به عنوان مثال، یک فایل .env می‌تواند به شکل زیر باشد:

LIARA_ENDPOINT="https://storage.iran.liara.space"
LIARA_BUCKET_NAME="my-personal-files"
LIARA_ACCESS_KEY="nad4u71et9dgc3go"
LIARA_SECRET_KEY="82c963df-1122-4c31-868b-0124a28ad57d"

در مرحله‌ی آخر باید فایل settings.py برنامه‌تان را به‌ شکل زیر ویرایش کنید:

INSTALLED_APPS = [ 
  ...,
  'storages',
]

# Object storage
# django >= 4.2
STORAGES = {"default": {"BACKEND": "storages.backends.s3boto3.S3Boto3Storage"}}
AWS_S3_ENDPOINT_URL = os.getenv("LIARA_ENDPOINT")
AWS_S3_ACCESS_KEY_ID = os.getenv("LIARA_ACCESS_KEY")
AWS_S3_SECRET_ACCESS_KEY = os.getenv("LIARA_SECRET_KEY")
AWS_STORAGE_BUCKET_NAME = os.getenv("LIARA_BUCKET_NAME")

نحوه‌ی استفاده

می‌توان گفت که تغییر خاصی در نحوه‌ی استفاده‌ی شما به‌وجود نخواهد آمد. برای مثال شما می‌توانید با استفاده از قطعه کد زیر، محتوای Contents را در فایلی با نام example.txt قرار داده و آن را در فضای ذخیره‌سازی ابری ذخیره کنید:

from django.core.files.base import ContentFile
from django.core.files.storage import default_storage

path = default_storage.save('/example.txt', ContentFile(b'Contents'))

برای استفاده از object storage در مدل‌ها، به شکل زیر می‌توان عمل کرد.

from django.db import models


class Storage(models.Model):
    my_file = models.FileField()

برای ذخیره فایل در object storage می‌توانید مانند قبل عمل کرده، و فایل های آپلود شده به طور خودکار در ذخیره‌سازی ابری لیارا قرار می‌گیرند. همچنین می‌توانید به طور مستقیم از کتابخانه boto3 نیز استفاده کنید. نحوه استفاده از این کتابخانه در مستندات flask آورده‌ شده‌است؛ می‌توانید به این لینک مراجعه کنید.


متوجه شدم، برو گام بعدی!
;