使用CreateView CBV提交后将图像文件保存到Django

时间:2019-07-17 16:24:51

标签: javascript django django-forms django-templates django-views

昨天,使用此解决方案View an Image Using Django CreateView Before Submitting,我能够弄清楚当用户单击Django项目中的选择文件按钮时如何显示图像。但是,当用户提交表单时,我不知道现在如何保存图像。我意识到我正在使用的解决方案是利用HTML URL使用Javascript显示图像。

当我使用一种方法来附加图像,然后提交表单而不先显示图像时,这可以正常工作。但是,当我使用上面提到的解决方案时,它没有捕获图像。

这有效...

<div>
  <h2>Photo: </h2>
</div>

<div>
  {{ form.image }}
</div>

但是,当我尝试利用它时......根据先前的解决方案...

<input type='file' onchange="readURL(this);" />
<img id="blah" src="#" alt="your image" />

并使用Javascript ...

  function readURL(input) {
    if (input.files && input.files[0]) {
      var reader = new FileReader();
      reader.onload = function (e) {
        $('#blah')
          .attr('src', e.target.result)
          .width(150)
          .height(200);
      };
      reader.readAsDataURL(input.files[0]);
    }
  }

显示文件,但是我不知道如何在用户提交后将其保存到数据库。

我尝试使用此处记录的各种解决方案... Django: add image in an ImageField from image url,但到目前为止没有运气。预先感谢您的任何想法。

1 个答案:

答案 0 :(得分:0)

事实证明是如此简单!!!当您知道答案BTW时,这很简单。

<input type='file' name="django_form_field_name" onchange="readURL(this);" />

确保输入名称与django表单名称匹配是将图像URL放入具有正确位置的数据库的方法。