Чтобы изменить содержимое поля файла, вы должны передать экземпляр объекта File
django в FileField.save()
. Он немного отличается от других типов полей модели.
FieldFile.save (name, content, save = True)
Этот метод принимает имя файла и содержимое файла и передает их классу хранения для поля, а затем ассоциирует сохраненный файл с полем модели. Если вы хотите вручную связать данные файла с экземплярами FileField в своей модели, метод save () используется для сохранения данных файла.
blockquote>from PIL import Image from django.core.files.base import ContentFile if instance.image: im = Image.open(instance.image) im.thumbnail((220, 130), Image.ANTIALIAS) thumb_io = BytesIO() im.save(thumb_io, im.format, quality=60) instance.image.save(im.filename, ContentFile(thumb_io.get_value()), save=False) instance.save()
Но если вы не используете удаленный файловой системы, вы можете просто перезаписать сам файл. Файл был создан при вызове
form.save()
. Поскольку вы используете одно и то же имя файла и местоположение, вам действительно не нужно прикасаться к модели или сообщать django, что вы возитесь с самим файлом.if instance.image: im = Image.open(instance.image) im.thumbnail((220, 130), Image.ANTIALIAS) im.save(im.filename, quality=60)
в вашем запросе ajax, добавив:
dataType: "jsonp",
после строки:
type: 'GET',
должен решить эту проблему ..
надеюсь, что эта помощь вам поможет
У вас должна возникнуть идея, почему вы получаете эту проблему после прохождения вышеупомянутых ответов.
self.send_header('Access-Control-Allow-Origin', '*')
Вам просто нужно добавить указанную выше строку на стороне вашего сервера.
Вы должны изменить код вашей серверной части, как указано ниже
public class CorsResponseFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext)
throws IOException {
responseContext.getHeaders().add("Access-Control-Allow-Origin","*");
responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
}
}
Это происходит, когда вы пытаетесь получить доступ к ресурсам другого домена.
Это функция безопасности, позволяющая избежать свободного доступа к любым ресурсам этого домена (к которым можно получить доступ, например, для получения точной копии ваш сайт в пиратском домене.)
Заголовок ответа, даже если он 200OK не позволяет другим источникам (доменам, портам) обращаться к ресурсам ressources.
Вы можете исправить эта проблема, если вы являетесь владельцем обоих доменов:
Чтобы изменить это, вы можете записать это в .htaccess запрошенного файла домена:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
Если вы установите это в заголовок ответа запрошенного файла, вы разрешите всем получить доступ к ресурсам ressources:
Access-Control-Allow-Origin : *
ИЛИ
Access-Control-Allow-Origin : http://www.my-domain.com
Мир и код;)
Ваш браузер не разрешает ваш запрос .. вам нужно установить аддон вашего веб-браузера
Для Firefox https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/