ValueError at /(未设置必需的参数名称)

Rit*_*hah 8 python django heroku amazon-s3 amazon-web-services

我正在尝试使用 django 和 python 制作一个博客应用程序。我还尝试使用 s3 存储桶进行存储,使用 heroku 进行部署。我正在遵循 coreymschafer 的在线教程。我完全按照教程做所有事情,但我收到了这个错误。我不知道该怎么做。请帮忙!

我还安装了 boto3 和 django-storages。但是,我觉得问题出在 boto3 上,由于某种原因,请在此处输入图像描述。我附上了问题的截图,也只是想说明base.html没有问题

请帮忙!谢谢

我将这些添加到我的 settings.py 文件中:

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'
Run Code Online (Sandbox Code Playgroud)

小智 11

有同样的问题。注释掉这一行,代码再次正常工作:

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
Run Code Online (Sandbox Code Playgroud)

发现这是因为,即使我已经重新启动了我的电脑,我引用的环境变量之一设置不正确:

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')
Run Code Online (Sandbox Code Playgroud)

我使用 Python 控制台进行了检查:

import os
print(os.environ.get('AWS_ACCESS_KEY_ID'))
print(os.environ.get('AWS_SECRET_ACCESS_KEY'))
print(os.environ.get('AWS_STORAGE_BUCKET_NAME'))
Run Code Online (Sandbox Code Playgroud)

并确保 Python 可以正确访问所有值。然后带回来了:

DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
Run Code Online (Sandbox Code Playgroud)


小智 0

我遇到了与您相同的问题,尽管您在本地计算机中设置了AWS环境变量,但您可能没有在服务器端设置它们。因此,您可以复制设置 AWS 环境变量的本地 .bash_profile 文件中的导出命令,并将其粘贴到服务器端的 .bash_profile 文件中。