Как получить мультимедийные изображения в URL-адресе в django url с помощью reactjs

#django #reactjs

#django #reactjs

Вопрос:

статическая и мультимедийная конфигурация в settings.py

 STATIC_URL = '/static/'

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'frontend','build', 'static')
]

MEDIA_URL='/media/'

MEDIA_ROOT=os.path.join(BASE_DIR, 'media')
  

urls.py

 from django.contrib import admin
from django.urls import path, include, re_path
from django.views.generic import TemplateView
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path('', TemplateView.as_view(template_name='index.html')),
]   static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
  

Здесь я использую django с reactjs.

я указал путь к папке сборки в приложении react следующим образом.

 TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'frontend','build')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
  

Когда я собираюсь http://127.0.0.1:8000/media/images_OkG6q2k.jpeg путь для получения изображений
в боковой папке мультимедиа, которые загружаются пользователями, я получаю страницу маршрута реакции.
Я не получаю изображение из папки мультимедиа.

Как я могу видеть мультимедийные фотографии через url.

Структура проекта

вместо этого появляется медиа-изображение, подобное этому, когда я отправляю url

Ответ №1:

Я думаю, что я только что преодолел эту проблему с помощью одного из моих проектов с Django backend React frontend. Это в ваших шаблонах url.

Насколько я понимаю, этот универсальный шаблон:

 re_path('', TemplateView.as_view(template_name='index.html'))
  

по сути, переопределяет шаблон URL-адреса мультимедиа, который вы написали (и любые другие ниже него), что не позволяет серверной части Django разрешить вам доступ к файлам мультимедиа. Чтобы исправить это, просто убедитесь, что универсальный маршрут является последним в ваших шаблонах. После того, как вы закончите с остальными шаблонами, в новой строке сделайте это:

 urlpatterns  = [re_path('', TemplateView.as_view(template_name='index.html'))]
  

Таким образом, вы добавляете его в свои пути после всех остальных, и он не «блокирует» какие-либо другие. надеюсь, это исправит это!

Комментарии:

1. Чувак, твое решение — genus

2. @soubhagya-pradhan сработало ли это для вас? 🙂

3. Хорошее решение, сделал что-то подобное, подумал, что это неправильно. Теперь мне нравится ваше решение. Гениально.