У меня есть 2 модели django:
class Image(models.Model):
name = models.CharField(max_length=100)
photo = models.ImageField(upload_to='upload/', blank=True)
class Preview(models.Model):
photo = models.ImageField(upload_to='preview', blank=True)
Затем я создаю ImageForm
с ModelForm
и отображаю его в html-шаблоне.Я хочу сделать предварительный просмотр изображения на странице.Я использую https://github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin
<script src="/static/js/jquery.ui.widget.js"></script>
<script src="/static/js/jquery.iframe-transport.js"></script>
<script src="/static/js/jquery.fileupload.js"></script>
<script>
$(function () {
$('#id_photo').fileupload({
dataType: 'json',
url: '{% url preview %}',
always: function (e, data) {
$('#preview').css({'visibility': 'visible'});
$('#preview').prepend('<img src=/static/'+data.result.url+' />')
}
});
});
</script>
<form method="POST" action="edit/" enctype="multipart/form-data">
<div class="field">
{{ form.photo.errors }}
<label for="id_photo">Photo:</label>
<input type="file" name="photo" id="id_photo" >
</div>
<div id="preview">
</div>
<input type="submit" name="Change">
Итак, с помощью javascipt
я отправляю изображение на сервер, изменяю его размер (в представлении preview
- он обрабатывает PreviewForm
), сохраняю на диске и возвращаюURL, который вставляется в тег img
.Оно работает.
После того, как я нажму кнопку Submit , я не могу получить файл изображения в моем представлении (edit
, который обрабатывает ImageForm
): request.FILES пусто !!!Когда я отключаю «загрузку изображения с помощью js», режим редактирования работает нормально: request.FILES
содержит изображение, и я могу сохранить его ..
что вызывает исчезновение request.FILES
во втором POST
запросе?