Django, [Errno 2] No such file or directory: '/tmp/tmp72r2h258.upload.jpg'
У меня есть форма создания объявления, при загрузке изображений в соотношении сторон: width:4000, height:3000 все сохраняется нормально, но если загрузить изображение с width более 4150 +-, вылетает ошибка:
No such file | [Errno 2] No such file or directory: '/tmp/tmp72r2h258.upload.jpg'
views:
def form_valid(self, form):
new_ad = form.save()
new_ad.slug = '-'.join(new_ad.ad_title.split()) + '-id-' + str(new_ad.id)
new_ad.author = self.request.user
for image in self.request.FILES.getlist('img'):
AdImage.objects.create(ad=new_ad, img=image)
new_ad.save()
return super(AdCreateMixin, self).form_valid(form)
В models.py я уменьшаю изображение:
class Ad(models.Model):
img = models.ImageField(upload_to='images/')
class AdImage(models.Model):
ad = models.ForeignKey(Ad, on_delete=models.CASCADE, default=None)
img = models.ImageField(upload_to='images/')
# **Такой же save() метод есть и в вверхней модели**
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
img = Image.open(self.img.path)
if img.height > 500 or img.width > 500:
output_size = (500, 500)
img.thumbnail(output_size)
img.save(self.img.path)
upd:
Ad.last_up received a naive datetime (2020-07-10 17:42:09.162217) while time zone support is active.
warnings.warn("DateTimeField %s received a naive datetime (%s)"
Internal Server Error: /ad/create/
Traceback (most recent call last):
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/sherlock/python/newjerdesh/users/decorators.py", line 8, in wrapper_func
return view_func(request, *args, **kwargs)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/views/generic/base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/views/generic/edit.py", line 172, in post
return super().post(request, *args, **kwargs)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/views/generic/edit.py", line 142, in post
return self.form_valid(form)
File "/home/sherlock/python/newjerdesh/jerdesh/utils.py", line 26, in form_valid
AdImage.objects.create(ad=new_ad, img=image)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/query.py", line 433, in create
obj.save(force_insert=True, using=self.db)
File "/home/sherlock/python/newjerdesh/jerdesh/models.py", line 74, in save
super().save(*args, **kwargs)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/base.py", line 745, in save
self.save_base(using=using, force_insert=force_insert,
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/base.py", line 782, in save_base
updated = self._save_table(
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/base.py", line 887, in _save_table
results = self._do_insert(cls._base_manager, using, fields, returning_fields, raw)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/base.py", line 924, in _do_insert
return manager._insert(
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/query.py", line 1204, in _insert
return query.get_compiler(using=using).execute_sql(returning_fields)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1391, in execute_sql
for sql, params in self.as_sql():
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1334, in as_sql
value_rows = [
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1335, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1335, in <listcomp>
[self.prepare_value(field, self.pre_save_val(field, obj)) for field in fields]
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/sql/compiler.py", line 1286, in pre_save_val
return field.pre_save(obj, add=True)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/fields/files.py", line 288, in pre_save
file.save(file.name, file.file, save=False)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/db/models/fields/files.py", line 87, in save
self.name = self.storage.save(name, content, max_length=self.field.max_length)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/core/files/storage.py", line 52, in save
return self._save(name, content)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/core/files/storage.py", line 262, in _save
file_move_safe(content.temporary_file_path(), full_path)
File "/home/sherlock/.local/share/virtualenvs/newjerdesh-Pe7mR0LJ/lib/python3.8/site-packages/django/core/files/move.py", line 56, in file_move_safe
with open(old_file_name, 'rb') as old_file:
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/tmp0x9w2vni.upload.jpg'
Ответы (1 шт):
Автор решения: Medet
→ Ссылка
Django's default file upload limit is 2.5MB. Change it larger size like this in settings.py file :
FILE_UPLOAD_MAX_MEMORY_SIZE = 104857600 (100MB)
