Как загружать и использовать изображения в heroku django
Итак, я создал приложение, в котором можно создавать продукты. И эти продукты имеют изображение, которое было сохранено в файл, когда я использовал это приложение локально. Я развернул свое приложение на heroku и, конечно, поскольку там нет нормальных файлов, как в локальном, оно не может быть сохранено там. Как я могу сохранить его где-нибудь и использовать? Я также использую postgesql для хранения других данных, так что, возможно, я смогу сохранить и изображение.
class Product(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=255, blank=True, null=True)
image = models.ImageField(upload_to='images', blank=True, null=True)
price = models.FloatField(max_length=255, blank=True, null=True)
description = models.TextField(max_length=255, blank=True, null=True)
category = models.ForeignKey(Category, blank=True, on_delete=models.CASCADE)
seller = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
heroku не может хранить наши статические файлы, нам нужно где-то разместить наши файлы. Если вы хотите использовать бесплатный провайдер статических файлов, вы можете проверить https://pypi.org/project/django-cloudinary-storage/ ... Есть еще один, который является AWS S3 bucket, мы можем использовать его тоже, но он будет взимать с нас 1$ за год ..
установка облаков :
pip install django-cloudinary-storage
#import in setting.py
импортировать cloudinary import cloudinary.uploader import cloudinary.api
INSTALLED_APPS = [ ....... 'cloudinary_storage', 'cloudinary',
]
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
DEFAULT_FILE_STORAGE = 'cloudinary_storage.storage.MediaCloudinaryStorage'
># если вы зайдете на https://cloudinary.com/documentation/django_integration, то сможете получить ключи
CLOUDINARY_STORAGE = { 'CLOUD_NAME': '', 'API_KEY': '', 'API_SECRET': '' }
##########
и затем разверните его снова