Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Django. Проблема с отображением изображений [RSS Feed]

#1 Июнь 6, 2023 09:21:03

pypi4goda
Зарегистрирован: 2023-06-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Django. Проблема с отображением изображений

Добрый день, господа. Вот такая проблема.

У меня в проекте у пользователей есть возможность обновлять некоторое изображение, которые напрямую сохраняются на сервере с помощью 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, _)

Однако когда после обновления пользователь проверяет успешное его применение, то ему показывается старое, не обновленное изображение, хотя на самом сервере оно было обновлено и если открыть файл по указанному пути, он был изменен. Отображаю файл при помощи такого html-кода:

<img src="ТУТ ФОРМИРУЕТСЯ ССЛЫКА" alt="izobrazhenie" width="250" height="250" class="indent">

Стоит знать, что я пробовал в html и django-view, отвечающих за данную страничку, встроенные возможности Django-Кеширования, когда плохо в нем разберался. Тогда и возникла эта проблема, однако когда код кеширования я убрал, проблема осталось. В т.ч. пробовал пересобирать venv, но это не помогало.

Проблема решается только путем перезахода в браузер (перезагрузки).

Есть-ли у кого либо идеи, как подобную ерунду разрешить? Буду крайне благодарен за помощь.

Офлайн

#2 Июнь 6, 2023 09:51:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9860
Репутация: +  853  -
Профиль   Отправить e-mail  

Django. Проблема с отображением изображений

pypi4goda
  
_ = response.FILES["izobrazhenie"]
Не используй одно подчёркивание в качестве имени нигде. Только чтобы заглушить что-то оно используется. Так что для начала дай ему нормальное имя.

pypi4goda
  
        except FileNotFoundError:
            pass
Также здесь выведи что-то в лог или куда-нибудь. Может, оно срабатывает, а ты не знаешь.



Отредактировано py.user.next (Июнь 6, 2023 09:56:30)

Офлайн

#3 Июнь 6, 2023 21:05:59

pypi4goda
Зарегистрирован: 2023-06-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Django. Проблема с отображением изображений

Спасибо, что откликнулись!

Нет, исключение не срабатывает.

У меня при закрытии браузера сбрасываются куки и данные сайтов. Может быть, это все как-то связано?

Отредактировано pypi4goda (Июнь 6, 2023 21:13:03)

Офлайн

#4 Июнь 7, 2023 02:09:22

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9860
Репутация: +  853  -
Профиль   Отправить e-mail  

Django. Проблема с отображением изображений

pypi4goda
У меня при закрытии браузера сбрасываются куки и данные сайтов. Может быть, это все как-то связано?

Попробуй вот в этом fss
pypi4goda
  
fss = FileSystemStorage()
поискать какой-то финализатор. Возможно, он там есть.

pypi4goda
Проблема решается только путем перезахода в браузер (перезагрузки).
pypi4goda
У меня при закрытии браузера сбрасываются куки и данные сайтов.
pypi4goda
Стоит знать, что я пробовал в html и django-view, отвечающих за данную страничку, встроенные возможности Django-Кеширования, когда плохо в нем разберался. Тогда и возникла эта проблема, однако когда код кеширования я убрал, проблема осталось.


pypi4goda
хотя на самом сервере оно было обновлено и если открыть файл по указанному пути, он был изменен
Прямо вот обновляешь страницу в браузере и она показывает старое изображение каждый раз? А при этом на диске лежит уже новое изображение? И только при стирании печенья и кеша в браузере всё меняется на новое изображение? Можешь попробовать на время отключить стирание печенья и кеша в браузере. По этой теории он должен тогда при перезапуске старое изображение показывать.

pypi4goda
когда плохо в нем разберался
Я вообще Django не знаю, наугад тебе пишу. Но я как бы знаю, как они примерно все работают, такие системы.



Офлайн

#5 Июнь 7, 2023 13:40:51

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

Django. Проблема с отображением изображений

 <img src="ТУТ ФОРМИРУЕТСЯ ССЛЫКА?{{ any_random_integer }}" alt="izobrazhenie" width="250" height="250" class="indent">

Кеширование браузера таким образом сбрасывайте.

Офлайн

#6 Июнь 7, 2023 21:28:11

pypi4goda
Зарегистрирован: 2023-06-05
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Django. Проблема с отображением изображений

Большое спасибо, VadimK! Проблему удалось решить при помощи сброса браузерного кеша так, как предложили это сделать Вы.

И спасибо py.user.next, Вы помогли мне глубже разобраться в проблеме!

Хорошего дня.

Офлайн

#7 Июнь 8, 2023 02:08:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9860
Репутация: +  853  -
Профиль   Отправить e-mail  

Django. Проблема с отображением изображений

pypi4goda
Большое спасибо, VadimK! Проблему удалось решить при помощи сброса браузерного кеша так, как предложили это сделать Вы.
Ну, это такое, костыльное решение. Тебе придётся тогда что, по всем сайтам, которые ты делаешь, все ссылки менять? Лучше всё-таки в Django разберись, где там у него и что по кешу. Иначе тебе так сломанный Django залезет во все сайты.



Офлайн

  • Начало
  • » Django
  • » Django. Проблема с отображением изображений[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version