Django Backend Изображение не отображается
Я перепробовал множество способов, но ничего не помогает. Я не могу найти решение этой проблемы. Мой фронтенд - React, а бэкенд - Django. В браузере вместо изображения отображается только ссылка на URL путь к изображению. Я пытался добавить этот код в другой шаблон и он работал, но этот не работает.
Мой settings.py
INSTALLED_APPS = ['django.contrib.staticfiles',]
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
Мой urls.py
from django.views.generic import TemplateView
from django.urls import path, include, re_path
from django.conf import settings
from django.conf.urls.static import static
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,
document_root=settings.MEDIA_ROOT)
if not settings.DEBUG:
urlpatterns += [re_path(r'^.*',
TemplateView.as_view(template_name='index.html'))]
Моя модель выглядит следующим образом
class Product(models.Model):
name = models.CharField(max_length=200)
image = models.ImageField(blank=True)
description = models.TextField()
price = models.DecimalField(max_digits=9, decimal_places=2)
createdAt = models.DateTimeField(auto_now_add=True)
def __str__(self):
return f" '{self.name}' "
вот моя конфигурация, в моем проекте React внутри Django, надеюсь, это может помочь
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATICFILES_DIRS = [
BASE_DIR / 'static',
BASE_DIR / 'frontend/build/static' //this is from react, frontend is the React project's name
]
MEDIA_ROOT = BASE_DIR / 'static/media'
STATIC_ROOT = BASE_DIR / 'staticfiles
не забудьте добавить/установить corsheader (также добавьте его в INSTALLED_APPS), и whitenoise
MIDDLEWARE = [
'corsheaders.middleware.CorsMiddleware',
'whitenoise.middleware.WhiteNoiseMiddleware',
...]
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
CORS_ALLOW_ALL_ORIGINS = True
urls.py
urlpatterns = [
path('', TemplateView.as_view(template_name='index.html')),
.....
]
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)