Форум сайта python.su
Добрый день, господа. Вот такая проблема.
У меня в проекте у пользователей есть возможность обновлять некоторое изображение, которые напрямую сохраняются на сервере с помощью FileSystemStorage, модуля os и такого кода:
if response.FILES.get("izobrazhenie", False):
form = forms.UploadIzobrazhenieForm(response.POST, response.FILES)
if form.is_valid():
_ = response.FILES["izobrazhenie"]
fss = FileSystemStorage()
name_of_new_file = os.path.join(BASE_DIR, f"static/{response.user.pk}{_.name[-4:]}")
try:
os.remove(name_of_new_file)
except FileNotFoundError:
pass
finally:
fss.save(name_of_new_file, _)
<img src="ТУТ ФОРМИРУЕТСЯ ССЛЫКА" alt="izobrazhenie" width="250" height="250" class="indent">
Офлайн
pypi4godaНе используй одно подчёркивание в качестве имени нигде. Только чтобы заглушить что-то оно используется. Так что для начала дай ему нормальное имя._ = response.FILES["izobrazhenie"]
pypi4godaТакже здесь выведи что-то в лог или куда-нибудь. Может, оно срабатывает, а ты не знаешь.except FileNotFoundError: pass
Отредактировано py.user.next (Июнь 6, 2023 09:56:30)
Офлайн
Спасибо, что откликнулись!
Нет, исключение не срабатывает.
У меня при закрытии браузера сбрасываются куки и данные сайтов. Может быть, это все как-то связано?
Отредактировано pypi4goda (Июнь 6, 2023 21:13:03)
Офлайн
pypi4goda
У меня при закрытии браузера сбрасываются куки и данные сайтов. Может быть, это все как-то связано?
pypi4godaпоискать какой-то финализатор. Возможно, он там есть.fss = FileSystemStorage()
pypi4goda
Проблема решается только путем перезахода в браузер (перезагрузки).
pypi4goda
У меня при закрытии браузера сбрасываются куки и данные сайтов.
pypi4goda
Стоит знать, что я пробовал в html и django-view, отвечающих за данную страничку, встроенные возможности Django-Кеширования, когда плохо в нем разберался. Тогда и возникла эта проблема, однако когда код кеширования я убрал, проблема осталось.
pypi4godaПрямо вот обновляешь страницу в браузере и она показывает старое изображение каждый раз? А при этом на диске лежит уже новое изображение? И только при стирании печенья и кеша в браузере всё меняется на новое изображение? Можешь попробовать на время отключить стирание печенья и кеша в браузере. По этой теории он должен тогда при перезапуске старое изображение показывать.
хотя на самом сервере оно было обновлено и если открыть файл по указанному пути, он был изменен
pypi4godaЯ вообще Django не знаю, наугад тебе пишу. Но я как бы знаю, как они примерно все работают, такие системы.
когда плохо в нем разберался
Офлайн
<img src="ТУТ ФОРМИРУЕТСЯ ССЛЫКА?{{ any_random_integer }}" alt="izobrazhenie" width="250" height="250" class="indent">
Офлайн
Большое спасибо, VadimK! Проблему удалось решить при помощи сброса браузерного кеша так, как предложили это сделать Вы.
И спасибо py.user.next, Вы помогли мне глубже разобраться в проблеме!
Хорошего дня.
Офлайн
pypi4godaНу, это такое, костыльное решение. Тебе придётся тогда что, по всем сайтам, которые ты делаешь, все ссылки менять? Лучше всё-таки в Django разберись, где там у него и что по кешу. Иначе тебе так сломанный Django залезет во все сайты.
Большое спасибо, VadimK! Проблему удалось решить при помощи сброса браузерного кеша так, как предложили это сделать Вы.
Офлайн