![](/img/trans.png)
[英]TypeError when using Boto3 client to put_object to AWS S3 Bucket
[英]TypeError when using AWS S3 Bucket with Django
我是 Django 和 AWS S3 的新手,似乎碰壁了。 目前這一切都在 localhost 上。 我正在嘗試通過我自己的管理應用程序為我正在開發的 Art Gallery 網站添加新產品,最初在添加產品時一切正常,但由於使用 AWS S3,我收到以下 TypeError:
該錯誤表明它期待“......一個字符串或字節,如 object”。 並在我的mixins.py和我的員工views.py中引用以下代碼行
mixins.py:
from django.shortcuts import redirect
class StaffUserMixin(object):
def dispatch(self, request, *args, **kwargs):
if not request.user.is_staff:
return redirect("home")
return super(StaffUserMixin, self).dispatch(request, *args, **kwargs)
視圖.py:
class ProductCreateView(LoginRequiredMixin, StaffUserMixin, generic.CreateView):
template_name = 'staff/product_create.html'
form_class = ProductForm
def get_success_url(self):
return reverse("staff:product-list")
def form_valid(self, form):
form.save()
return super(ProductCreateView, self).form_valid(form)
正如我在開始時所說的那樣,我對 Django 和 AWS S3 都很陌生,所以如果這只是一個小學生的錯誤,請原諒我,但任何幫助都會很棒。 如果需要任何其他信息,我很樂意提供。 謝謝!
你需要在你的settings.py
文件中寫一些行來讓django-storages
工作。
這些行是:
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')
並且您需要在.bash_profile
文件中識別這些變量(如果您在 Mac 上),以便出於安全原因它們不會提交給您的版本控制系統。
您需要遵循以下語法:
export AWS_ACCESS_KEY_ID="YOUR_ID" **(NO SPACES)**
export AWS_SECRET_ACCESS_KEY="YOUR_SECRET_KEY"
export AWS_STORAGE_BUCKET_NAME="YOUR_BUCKET_NAME"
然后您需要使用configVars
向 Heroku (我遇到此錯誤)提供此數據。
在您的終端/命令行中:
heroku config:set AWS_ACCESS_KEY_ID="YOUR_ID"
heroku config:set AWS_SECRET_ACCESS_KEY="YOUR_SECRET_KEY"
heroku config:set AWS_STORAGE_BUCKET_NAME="YOUR_BUCKET_NAME"
確保使用雙引號!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.