Python 将AWS S3存储桶与Django一起使用时出现类型错误
我是Django和AWS S3的新手,似乎遇到了麻烦。目前这一切都在本地主机上。我正试图通过我自己的管理应用程序为我正在处理的一个美术馆网站添加一个新产品,最初添加产品时一切正常,但由于使用AWS S3,我收到以下类型错误: 该错误表示它需要“…一个字符串或类似字节的对象。”并引用mymixins.py和my staffviews.py中的以下代码行 mixins.py:Python 将AWS S3存储桶与Django一起使用时出现类型错误,python,django,amazon-s3,Python,Django,Amazon S3,我是Django和AWS S3的新手,似乎遇到了麻烦。目前这一切都在本地主机上。我正试图通过我自己的管理应用程序为我正在处理的一个美术馆网站添加一个新产品,最初添加产品时一切正常,但由于使用AWS S3,我收到以下类型错误: 该错误表示它需要“…一个字符串或类似字节的对象。”并引用mymixins.py和my staffviews.py中的以下代码行 mixins.py: from django.shortcuts import redirect class StaffUserMixin
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)
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)
视图。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)
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存储工作
这些线路是:
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\u概要文件中标识这些变量(如果您在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"
确保使用双引号您需要在settings.py
文件中写入一些行,以使django存储
正常工作
这些线路是:
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\u概要文件中标识这些变量(如果您在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"
确保使用双引号您可以使用print(…)
和print(type(…)
查看变量中的内容以及从函数中获得的内容,即从super(…).dispatch(…)
中获得的内容。您还可以使用print()
更好地识别哪一行正在工作,哪一行出现问题-即print(“超级分派前”)
它被称为“打印调试”
您可以使用print(…)
和print(type(…)
查看变量中的内容以及从函数中获得的内容,即从super(…).dispatch(…)
。您还可以使用print()
更好地识别哪一行正在工作,哪一行出现问题-即print(“超级分派前”)
它被称为“打印调试”