استفاده از Imgproxy در برنامه Django


برای استفاده از Imgproxy در برنامه‌های Django، نیاز به نصب ماژول و یا کتابخانه خاصی نیست! در ابتدا، کافیست تا متغیرهای ENDPOINT و IMGPROXY_URL را به شکل زیر به فایل settings.py اضافه کنید:

کپی
import os
ENDPOINT     = os.getenv("ENDPOINT", 'http://127.0.0.1:8000')
IMGPROXY_URL = os.getenv("IMGPROXY_URL", "")

دقت داشته باشید که مقدار ENDPOINT را حتماً با http یا https وارد کنید و همچنین مقدار IMGPROXY_URL باید برابر با آدرس کامل برنامه Imgproxy باشد.

برای مثال، اگر که از فایل env. استفاده می‌کنید، مقادیر دو متغیر فوق را باید همانند مقادیر زیر وارد کنید:

کپی
ENDPOINT=https://django-app-test.liara.run
IMGPROXY_URL=https://imgproxy-app.liara.run

اکنون می‌توانید از Imgproxy در برنامه خود استفاده کنید؛ برای مثال، قطعه کد زیر در فایل models.py به کار رفته است:

کپی
from django.db import models
from django.conf import settings

img_proxy_conf = {
    "signature": "_",
    "options": "resize:fill:300:400:0",
    "gravity": "gravity:sm",}

class Image(models.Model):
    title = models.CharField(max_length=100)
    image = models.ImageField(upload_to='')
    full_path = models.CharField(max_length=255)
    final_result = models.CharField(max_length=255)

    def save(self, *args, **kwargs):
        if self.image:
            self.full_path = f"{settings.ENDPOINT}{self.image.url}"
            if settings.IMGPROXY_URL != "":
                self.final_result = (
                    f"{settings.IMGPROXY_URL}/{img_proxy_conf['signature']}/"
                    f"{img_proxy_conf['options']}/{img_proxy_conf['gravity']}/plain/"
                    f"{self.full_path}")
            else:
                self.final_result = self.image.url
        super().save(*args, **kwargs)

در نظر داشته باشید که کد فوق، یک مثال از کاربرد Imgproxy است و شما می‌توانید فیلد option درون img_proxy_conf موجود در کد فوق را با توجه به نیاز خود تغییر دهید.

سورس کامل قطعه کد فوق در اینجا موجود است که می‌توانید از آن استفاده کنید.