簡體   English   中英

將 AWS S3 存儲桶與 Django 一起使用時出現 TypeError

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM