简体   繁体   English

图像未使用django在AWS S3中上传

[英]images not being uploaded in AWS S3 with django

I want to upload image and load that uploaded images back to my webapp , previously loaded image in S3 bucket(which i uploaded manually) is rendering fine in the page but i am facing problem in uploading image in S3. 我想上传图像并将上传的图像加载回我的webapp中,先前在S3存储桶中加载的图像(我手动上传)在页面中呈现良好,但是我在S3中上传图像时遇到问题。

below is my settings.py config 以下是我的settings.py配置

INSTALLED_APPS = [

    'blog.apps.BlogConfig',
    'crispy_forms',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'storages',
]

AWS_ACCESS_KEY_ID = "given id"
AWS_SECRET_ACCESS_KEY = "given secret key"
AWS_STORAGE_BUCKET_NAME = "young-minds-files"
AWS_S3_URL = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
AWS_S3_REGION_NAME = "us-west-2"

AWS_S3_FILE_OVERWRITE = False
AWS_DEFAULT_ACL = None

DEFAULT_FILE_STORAGE = "storages.backends.s3boto3.S3Boto3Storage"

views.py views.py

class PostCreateView(LoginRequiredMixin,CreateView):
    model = Post
    fields = ["title","content","image1","image2","image3"]
    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)

models.py models.py

class Post(models.Model):
    title = models.CharField(max_length=100)
    category = models.CharField(max_length=100, default='Others')
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    image1 = models.ImageField(default='default_content.jpg', upload_to='content_pic')
    image2 = models.ImageField(default='default_content.jpg', upload_to='content_pic')
    image3 = models.ImageField(default='default_content.jpg', upload_to='content_pic')

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('post-detail', kwargs={'pk':self.pk})

template 模板

{% extends 'blog/base.html' %}
{% load crispy_forms_tags %}
{% block content %}
{% load static %}
<section class="site-section">
  <div class="container">
    <div class="row mb-4">
      <div class="col-md-6">

      </div>
    </div>
    <div class="row blog-entries">
      <div class="col-md-12 col-lg-8 main-content">

        <form method="post" enctype="multipart/form-data">
          <fieldset class="form-group">
            <legend class="border-bottom mb-4"> Create Your Blog</legend>
            {% csrf_token %}
            {{ form|crispy }}
          </fieldset>
          <div class="row">
            <div class="col-md-6 form-group">
              <button type="submit" class="btn btn-primary">Post</button>
            </div>
          </div>

        </form>

      </div>
    </section >
    <!-- END main-content -->

    {% endblock content %}

below is the error message when i try to upload an image 以下是我尝试上传图片时的错误消息

在此处输入图片说明

Thanks in advance! 提前致谢!

Try with these settings in order to have a well-formed url: 尝试使用以下设置,以获取格式正确的网址:

AWS_ACCESS_KEY_ID = "given id"
AWS_SECRET_ACCESS_KEY = "given secret key"
AWS_STORAGE_BUCKET_NAME = "young-minds-files"
AWS_S3_URL = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM