Mar-06-2022, 08:47 AM
Hi,
I have an app that will upload photos and videos but i keep getting server error 500. I am not sure how to configure the AWS S3 for media correctly. Here is what I have:
I have aws folder that has this file conf.py
here is the codes for the add product:
product model:
I have an app that will upload photos and videos but i keep getting server error 500. I am not sure how to configure the AWS S3 for media correctly. Here is what I have:
I have aws folder that has this file conf.py
DEFAULT_FILE_STORAGE = '{appname}.settings.aws.storage_backends.MediaStorage'
#DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Srorage'
AWS_ACCESS_KEY_ID = '???'
AWS_SECRET_ACCESS_KEY = '???'
AWS_STORAGE_BUCKET_NAME = '???'
AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_DEFAULT_ACL = 'public-read'
AWS_QUERYSTRING_AUTH = False
AWS_S3_OBJECT_PARAMETERS = {
'CacheControl': 'max-age=86400',
}
AWS_LOCATION = 'static'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATIC_URL = "https://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)storage_backends.pyfrom storages.backends.s3boto3 import S3Boto3Storage
class MediaStorage(S3Boto3Storage):
location = 'media'
file_overwrite = FalseI am trying to add a product an when submitted i am getting the error 500here is the codes for the add product:
product model:
class Product(models.Model): name = models.CharField(max_length=500, null=True) price = models.FloatField() category = models.ForeignKey(Category, on_delete=models.CASCADE, default=True, null=False) digital = models.BooleanField(default=True, null=True, blank=False) image = models.ImageField(upload_to='images/',null=True, blank=True) video_name= models.CharField(max_length=500) video_file= models.FileField(upload_to='videos/', null=True, verbose_name="") video_demo= models.FileField(upload_to='videos_demo/', null=True, verbose_name="") def __str__(self): return self.name @property def imageURL(self): try: url = self.image.url except: url = '' return urlforms.py
class ProductForm(ModelForm):
class Meta:
model = Product
fields = ('name','price','category','digital','image','video_name','video_file', 'video_demo')
labels = {
'name': '',
'price': '',
'category': '',
'digital': 'Digital?',
'image': 'Upload Image',
'video_name': '',
'video_file': 'Upload Video',
'video_demo': 'Upload Video Demo',
}
widgets = {
'name': forms.TextInput(attrs={'class':"form-control", "placeholder":"Product Name"}),
'price': forms.TextInput(attrs={'class':"form-control", "placeholder":"Product Price"}),
'category': forms.Select(attrs={'class':"form-control"}),
'digital': forms.CheckboxInput(attrs={'class':'form-control'}),
'image': forms.FileInput(attrs={'class':'form-control'}),
'video_name': forms.TextInput(attrs={'class':"form-control", "placeholder":"Video Title"}),
'video_file': forms.FileInput(attrs={'class':'form-control'}),
'video_demo': forms.FileInput(attrs={'class':'form-control'}),
}views.pydef add_product(request):
submitted = False
if request.method=="POST":
form = ProductForm(request.POST or None, request.FILES or None)
if form.is_valid():
form.save()
return HttpResponseRedirect('/add_product?submitted=True')
else:
form = ProductForm
if 'submitted' in request.GET:
submitted = True
return render(request, 'add_product.html', {'form':form, 'submitted':submitted})and add_product.html{% extends 'cart/main.html' %}
{% load static %}
{% block content %}
<center>
<h1>Add New Product</h1>
<center>
<br/><br/>
{% if submitted %}
Your product was added...
{% else %}
<form action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="submit" class="btn btn-secondary">
</form>
{% endif %}
{% endblock content %}thanks.
