#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>
, то с учетом опубликованного вами кода ничего не произойдет.