Изменение размера изображения в Django-ckeditor или максимальная ширина изображения
Я добавил ckeditor в свой проект django, но есть проблема. Загрузка изображений в Ckeditor работает, но когда я добавляю изображение слишком большой ширины, изображение перекрывает контейнер.
Добавляю картинку, чтобы дать вам представление:
I tried add sample code to ckeditor_uploader > views.py > ImageUploadView()
:
class ImageUploadView(generic.View):
http_method_names = ['post']
def post(self, request, **kwargs):
"""
Uploads a file and send back its URL to CKEditor.
"""
uploaded_file = request.FILES['upload']
backend = registry.get_backend()
ck_func_num = request.GET.get('CKEditorFuncNum')
if ck_func_num:
ck_func_num = escape(ck_func_num)
filewrapper = backend(storage, uploaded_file)
allow_nonimages = getattr(settings, 'CKEDITOR_ALLOW_NONIMAGE_FILES', True)
# Throws an error when an non-image file are uploaded.
if not filewrapper.is_image and not allow_nonimages:
return HttpResponse("""
<script type='text/javascript'>
window.parent.CKEDITOR.tools.callFunction({0}, '', 'Invalid file type.');
</script>""".format(ck_func_num))
filepath = get_upload_filename(uploaded_file.name, request)
print(filepath, "filepath")
print(uploaded_file,"path")
## IT'S MY SAMPLE CODE
image = Image.open(filewrapper.file_object)
if image.width > 800:
factor = 800/image.width
new_width = int(image.width*factor)
new_height = int(image.height*factor)
width = new_width
height = new_height
# output_size = (300,300)
# image.thumbnail(output_size)
# image.save(filepath.path)
print(width)
print(height)
else:
width = image.width
height = image.height
saved_path = filewrapper.save_as(filepath)
print(saved_path, "saved_path")
url = utils.get_media_url(saved_path)
print(url, "url")
if ck_func_num:
# Respond with Javascript sending ckeditor upload url.
return HttpResponse("""
<script type='text/javascript'>
window.parent.CKEDITOR.tools.callFunction({0}, '{1}');
</script>""".format(ck_func_num, url))
else:
_, filename = os.path.split(saved_path)
retdata = {'url': url, 'uploaded': '1',
'fileName': filename,
'width': width, 'height': height}
return JsonResponse(retdata)
upload = csrf_exempt(ImageUploadView.as_view())
для тех, кто не видел мой пример кода:
image = Image.open(filewrapper.file_object)
if image.width > 800:
factor = 800/image.width
new_width = int(image.width*factor)
new_height = int(image.height*factor)
width = new_width
height = new_height
# output_size = (300,300)
# image.thumbnail(output_size)
# image.save(filepath.path)
print(width)
print(height)
else:
width = image.width
height = image.height
Но он не работает..
И я попробовал изменить style.css :
.post .caption img {width: 100%;}
<div class="caption border">
{{message | safe }}
</div>
Но он не работает..
И я попробовал добавить settings.py:
CKEDITOR_THUMBNAIL_SIZE = (500, 500)
Но он не работает..