#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. Хорошее решение, сделал что-то подобное, подумал, что это неправильно. Теперь мне нравится ваше решение. Гениально.