Как обрезать изображения в приложении Django *Проблема с JavaScript*

#javascript #html #django #python-imaging-library

Вопрос:

У меня возникли проблемы с моим кодом JavaScript, и я пытаюсь настроить обрезку изображения (изображение) ниже, чтобы оно появилось, но когда я нажимаю кнопку «Выбрать файл«, но ничего не происходит. Я следую https://simpleisbetterthancomplex.com/tutorial/2017/03/02/how-to-crop-images-in-a-django-application.html и он немного устарел, поэтому мне было интересно, может ли кто-нибудь помочь указать, какая часть кода устарела. Ошибка должна быть в СКРИПТЕ/*, ЧТОБЫ ОТКРЫТЬ МОДАЛ С ПРЕДВАРИТЕЛЬНЫМ ПРОСМОТРОМ */ комментарием. Если бы кто-нибудь мог помочь, я был бы очень признателен.

введите описание изображения здесь

                 {% block javascript %}
                  <script>
                    $(function () {

                      /* SCRIPT TO OPEN THE MODAL WITH THE PREVIEW */
                      $("#id_file").change(function () {
                        if (this.files amp;amp; this.files[0]) {
                          var reader = new FileReader();
                          reader.onload = function (e) {
                            $("#image").attr("src", e.target.result);
                            $("#modalCrop").modal("show");
                          }
                          reader.readAsDataURL(this.files[0]);
                        }
                      });

                      /* SCRIPTS TO HANDLE THE CROPPER BOX */
                      var $image = $("#image");
                      var cropBoxData;
                      var canvasData;
                      $("#modalCrop").on("shown.bs.modal", function () {
                        $image.cropper({
                          viewMode: 1,
                          aspectRatio: 1/1,
                          minCropBoxWidth: 200,
                          minCropBoxHeight: 200,
                          ready: function () {
                            $image.cropper("setCanvasData", canvasData);
                            $image.cropper("setCropBoxData", cropBoxData);
                          }
                        });
                      }).on("hidden.bs.modal", function () {
                        cropBoxData = $image.cropper("getCropBoxData");
                        canvasData = $image.cropper("getCanvasData");
                        $image.cropper("destroy");
                      });

                      $(".js-zoom-in").click(function () {
                        $image.cropper("zoom", 0.1);
                      });

                      $(".js-zoom-out").click(function () {
                        $image.cropper("zoom", -0.1);
                      });

                      /* SCRIPT TO COLLECT THE DATA AND POST TO THE SERVER */
                      $(".js-crop-and-upload").click(function () {
                        var cropData = $image.cropper("getData");
                        $("#id_x").val(cropData["x"]);
                        $("#id_y").val(cropData["y"]);
                        $("#id_height").val(cropData["height"]);
                        $("#id_width").val(cropData["width"]);
                        $("#formUpload").submit();
                      });

                    });
                  </script>
                {% endblock %}


                  <h1 class="page-header">Album</h1>

                  <!-- FORM TO UPLOAD THE IMAGES -->
                  <form method="post" enctype="multipart/form-data" id="formUpload">
                    {% csrf_token %}
                    {{ form.as_p }}
                  </form>

                  <!-- MODAL TO CROP THE IMAGE -->
                  <div class="modal fade" id="modalCrop">
                    <div class="modal-dialog">
                      <div class="modal-content">
                        <div class="modal-header">
                          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">amp;times;</span>
                          </button>
                          <h4 class="modal-title">Crop the photo</h4>
                        </div>
                        <div class="modal-body">
                          <img src="" id="image" style="max-width: 100%;">
                        </div>
                        <div class="modal-footer">
                          <div class="btn-group pull-left" role="group">
                            <button type="button" class="btn btn-default js-zoom-in">
                              <span class="glyphicon glyphicon-zoom-in"></span>
                            </button>
                            <button type="button" class="btn btn-default js-zoom-out">
                              <span class="glyphicon glyphicon-zoom-out"></span>
                            </button>
                          </div>
                          <button type="button" class="btn btn-default" data-dismiss="modal">Nevermind</button>
                          <button type="button" class="btn btn-primary js-crop-and-upload">Crop and upload</button>
                        </div>
                      </div>
                    </div>
                  </div>

                  <!-- CONTAINER TO DISPLAY THE CROPPED IMAGES -->
                  <div class="row" style="margin-top: 20px">
                    {% for photo in photos %}
                      <div class="col-sm-4 col-md-3">
                        <img src="{{ uploads.image.url }}" class="thumbnail">
                      </div>
                    {% endfor %}
                  </div>

                {% endblock %}
 

Комментарии:

1. Есть ли <input type=file id=id_file> где-нибудь такое место?

2. Нет, я использую {% csrf_token %} {{ form.as_p }} в качестве входных данных для выбора файла.

3. Я знаю, что ввод-это то, что вызовет появление модального, поэтому я пытаюсь выяснить, является ли мой ввод причиной того, что он не появляется {{ form.as_p}} , или это сценарий для открытия модели, который вызывает проблему, потому что я знаю, что это одно или другое.

4. Важно то, что будет, когда ваш код Django попадет в браузер . Вы можете использовать инструмент «Инспектор» браузера для проверки DOM. Если файла нет <input> , то с учетом опубликованного вами кода ничего не произойдет.