images fix
This commit is contained in:
@@ -6,4 +6,7 @@ from django.conf.urls.static import static
|
|||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('admin/', admin.site.urls),
|
path('admin/', admin.site.urls),
|
||||||
path('api/', include('api.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)
|
||||||
|
|||||||
18
backend/sitemanagement/migrations/0008_alter_news_slug.py
Normal file
18
backend/sitemanagement/migrations/0008_alter_news_slug.py
Normal file
@@ -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),
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -37,19 +37,16 @@ class News(models.Model):
|
|||||||
return self.title
|
return self.title
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if not self.pk: # Только при первом сохранении
|
super().save(*args, **kwargs) #сохраняем изображение
|
||||||
super().save(*args, **kwargs) # сохраняем изображение
|
|
||||||
|
|
||||||
# генерируем путь к файлу если удалось его сохранить
|
# генерируем путь к файлу если удалось его сохранить
|
||||||
if self.titleImage:
|
if self.titleImage:
|
||||||
self.filename = os.path.basename(self.titleImage.name)
|
self.filename = os.path.basename(self.titleImage.name)
|
||||||
self.path = f'{settings.BASE_URL}{settings.MEDIA_URL}{self.titleImage.name}'
|
self.path = f'{settings.BASE_URL}{settings.MEDIA_URL}{self.titleImage.name}'
|
||||||
super().save(*args, **kwargs) # записываем путь и имя файла в базу
|
super().save(*args, **kwargs) # записываем путь и имя файла в базу
|
||||||
else:
|
|
||||||
self.filename = ''
|
|
||||||
self.path = ''
|
|
||||||
else:
|
else:
|
||||||
super().save(*args, **kwargs)
|
self.filename = ''
|
||||||
|
self.path = ''
|
||||||
|
|
||||||
@receiver(pre_save, sender=News)
|
@receiver(pre_save, sender=News)
|
||||||
def generate_slug(sender, instance, **kwargs):
|
def generate_slug(sender, instance, **kwargs):
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ export interface NewsItem {
|
|||||||
id: number
|
id: number
|
||||||
title: string
|
title: string
|
||||||
content: string
|
content: string
|
||||||
image: string
|
titleImage: string
|
||||||
slug: string
|
slug: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,12 @@ const News: React.FC<NewsProps> = ({ news }) => {
|
|||||||
<div className="flex flex-col bg-white rounded-2xl shadow-md overflow-hidden hover:shadow-2xl transition-shadow duration-500 p-6">
|
<div className="flex flex-col bg-white rounded-2xl shadow-md overflow-hidden hover:shadow-2xl transition-shadow duration-500 p-6">
|
||||||
<div className="relative h-[200px]">
|
<div className="relative h-[200px]">
|
||||||
<Image
|
<Image
|
||||||
src={item.image}
|
src={
|
||||||
|
item.titleImage.startsWith('http')
|
||||||
|
? item.titleImage
|
||||||
|
: `http://127.0.0.1:8000${item.titleImage}` ||
|
||||||
|
'/placeholder-image.jpg'
|
||||||
|
}
|
||||||
alt={item.title}
|
alt={item.title}
|
||||||
fill
|
fill
|
||||||
className="object-cover rounded-2xl"
|
className="object-cover rounded-2xl"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
'use client'
|
'use client'
|
||||||
import { useState } from 'react'
|
import React, { useState } from 'react'
|
||||||
|
|
||||||
interface ShowMoreProps {
|
interface ShowMoreProps {
|
||||||
text?: string
|
text?: string
|
||||||
|
|||||||
@@ -10,6 +10,16 @@ const nextConfig: NextConfig = {
|
|||||||
protocol: 'https',
|
protocol: 'https',
|
||||||
hostname: 'via.placeholder.com',
|
hostname: 'via.placeholder.com',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
protocol: 'http', // для локал девеломпента
|
||||||
|
hostname: '127.0.0.1',
|
||||||
|
port: '8000',
|
||||||
|
pathname: '/media/uploads/**',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
protocol: 'https',
|
||||||
|
hostname: 'tripwb.com',
|
||||||
|
},
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user