【发布时间】:2019-12-16 07:18:39
【问题描述】:
我正在为我的静态文件设置 AWS。基本上,当用户上传图片时,它会直接将图片存储在我的 AWS S3 上。我已经完成了所有的程序,但它给了我一个错误,提示 //profile/ 处的值错误和未设置必需的参数名称。在我的本地机器上它可以工作,但是当我部署它时它不工作。
我尝试重新启动我的数据库,然后将其迁移到 heroku 命令,但仍然得到相同的错误
models.py
class Profile(models.Model):
user = models.OneToOneField(User, on_delete =models.CASCADE)
image = models.ImageField(default='default.jpg', upload_to='profile_pics')
update = models.DateTimeField(default = timezone.now)
def __str__(self):
return f'{self.user.username} Profile'
def save(self, *args, **kwargs):
super(Profile,self).save(*args, **kwargs)
img = Image.open(self.image.path)
views.py
def profile(request):
profile = Profile.objects.get_or_create(user=request.user)
if request.method == 'POST':
u_form = UserUpdateForm(request.POST, instance=request.user)
p_form = ProfileUpdateForm(request.POST, request.FILES, instance=request.user.profile)
if u_form.is_valid() and p_form.is_valid():
u_form.save()
p_form.save()
messages.success(request, f'Your account has been updated!')
return redirect('profile')
else:
u_form = UserUpdateForm(instance=request.user)
p_form = ProfileUpdateForm(instance=request.user.profile)
context = {
'u_form':u_form,
'p_form':p_form
}
return render(request,'users/profile.html',context)
settings.py
STATIC_URL = '/static/'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_DIRS=(
os.path.join(BASE_DIR,'static'),
)
STATIC_ROOT=os.path.join(BASE_DIR, 'staticfiles')
MEDIA_ROOT=os.path.join(BASE_DIR, 'media')
MEDIA_URL='/media/'
AWS_LOCATION = 'static'
AWS_ACCESS_KEY_ID= os.environ.get('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY= os.environ.get('AWS_SECRET_ACCESS_KEY')
AWS_STORAGE_BUCKET_NAME= os.environ.get('AWS_STORAGE_BUCKET_NAME')
AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
我希望功能与我的本地相同,因为在我的本地我可以加载我的图片并查看 AWS 的 url,但是当我部署它时会出现错误。
【问题讨论】:
-
请显示完整的错误信息和回溯。您省略了告诉您未定义哪个标识符的部分。
-
这就是我收到的所有错误消息,但它在模板渲染期间也给了我一个错误,它突出显示了我的 在我的 base.html 上
标签: django heroku amazon-s3 django-models heroku-postgres