'How to upload and use images on heroku django
so i make this app in which you can make products. And those products have an image that was saved in a file while i was using this app localy. I deployed my app on heroku and ofc since there are no normal files like localy it cant be saved there. How can i save it somewere and use it? I also use postgesql btw to store other data so maybe i can store the image too.
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
Solution 1:[1]
heroku can't hold our static files we need to host our files somewhere . If you want to use a free static file provider then you can check out https://pypi.org/project/django-cloudinary-storage/ .. There is another one which is AWS S3 bucket we can use it too but it will charge us 1$ for a year ..
cloudinary setup :
pip install django-cloudinary-storage
#import in setting.py
import cloudinary import cloudinary.uploader import cloudinary.api
INSTALLED_APPS = [ ....... 'cloudinary_storage', 'cloudinary',
]
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
DEFAULT_FILE_STORAGE = 'cloudinary_storage.storage.MediaCloudinaryStorage'
#if you go to https://cloudinary.com/documentation/django_integration you can get keys
CLOUDINARY_STORAGE = { 'CLOUD_NAME': '', 'API_KEY': '', 'API_SECRET': '' }
##########
and then deploy it again
Solution 2:[2]
I tried your process but it didnt work because heroku ask to add cloudinary add-on which only possible by verifiying heroku account through credit card however in India you cannot add credit card or do process with billing on Heroku.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Farooque Ahmed |
Solution 2 | Abhijeet Jain |