【问题标题】:'Required parameter {0} not set'.format(identifier))'未设置必需参数 {0}'.format(identifier))
【发布时间】: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


【解决方案1】:

确保在远程环境中正确设置了环境变量 AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY 和 AWS_STORAGE_BUCKET_NAME。检查这些是否已传递给 Django,并且仅用于测试目的,尝试将它们输出到一些日志中

【讨论】:

    猜你喜欢
    • 2020-04-25
    • 2020-08-03
    • 2019-12-28
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2021-08-09
    • 2017-08-09
    相关资源
    最近更新 更多