From 9cf83b97104bf75c14387270ba0b6f774464b2d0 Mon Sep 17 00:00:00 2001 From: Timofey Date: Fri, 16 May 2025 12:02:36 +0300 Subject: [PATCH] images fix --- backend/base/urls.py | 5 ++++- .../migrations/0008_alter_news_slug.py | 18 ++++++++++++++++ backend/sitemanagement/models.py | 21 ++++++++----------- frontend/app/types/index.ts | 2 +- frontend/components/News.tsx | 7 ++++++- frontend/components/ui/ShowMore.tsx | 2 +- frontend/next.config.ts | 10 +++++++++ 7 files changed, 49 insertions(+), 16 deletions(-) create mode 100644 backend/sitemanagement/migrations/0008_alter_news_slug.py diff --git a/backend/base/urls.py b/backend/base/urls.py index 69a1cc9..2082554 100644 --- a/backend/base/urls.py +++ b/backend/base/urls.py @@ -6,4 +6,7 @@ from django.conf.urls.static import static urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('api.urls')), -] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) +] + +if settings.DEBUG: + urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/backend/sitemanagement/migrations/0008_alter_news_slug.py b/backend/sitemanagement/migrations/0008_alter_news_slug.py new file mode 100644 index 0000000..6ef2d85 --- /dev/null +++ b/backend/sitemanagement/migrations/0008_alter_news_slug.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.1 on 2025-05-16 08:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('sitemanagement', '0007_alter_news_slug_alter_news_titleimage'), + ] + + operations = [ + migrations.AlterField( + model_name='news', + name='slug', + field=models.SlugField(blank=True, editable=False, max_length=500, null=True), + ), + ] diff --git a/backend/sitemanagement/models.py b/backend/sitemanagement/models.py index 4412f75..f8b6dd5 100644 --- a/backend/sitemanagement/models.py +++ b/backend/sitemanagement/models.py @@ -37,19 +37,16 @@ class News(models.Model): return self.title def save(self, *args, **kwargs): - if not self.pk: # Только при первом сохранении - super().save(*args, **kwargs) # сохраняем изображение - - # генерируем путь к файлу если удалось его сохранить - if self.titleImage: - self.filename = os.path.basename(self.titleImage.name) - self.path = f'{settings.BASE_URL}{settings.MEDIA_URL}{self.titleImage.name}' - super().save(*args, **kwargs) # записываем путь и имя файла в базу - else: - self.filename = '' - self.path = '' + super().save(*args, **kwargs) #сохраняем изображение + + # генерируем путь к файлу если удалось его сохранить + if self.titleImage: + self.filename = os.path.basename(self.titleImage.name) + self.path = f'{settings.BASE_URL}{settings.MEDIA_URL}{self.titleImage.name}' + super().save(*args, **kwargs) # записываем путь и имя файла в базу else: - super().save(*args, **kwargs) + self.filename = '' + self.path = '' @receiver(pre_save, sender=News) def generate_slug(sender, instance, **kwargs): diff --git a/frontend/app/types/index.ts b/frontend/app/types/index.ts index b5b4c85..0f89b4c 100644 --- a/frontend/app/types/index.ts +++ b/frontend/app/types/index.ts @@ -59,7 +59,7 @@ export interface NewsItem { id: number title: string content: string - image: string + titleImage: string slug: string } diff --git a/frontend/components/News.tsx b/frontend/components/News.tsx index e8ffc24..67de054 100644 --- a/frontend/components/News.tsx +++ b/frontend/components/News.tsx @@ -20,7 +20,12 @@ const News: React.FC = ({ news }) => {