Django & React: Подключение нескольких приложений из одного шаблона
Доброе утро,
Я хотел бы спросить, возможно ли подключить несколько приложений на django, каждое из которых использует свой собственный react frontend? Например: У меня есть одна главная страница, которая содержит все ссылки на различные приложения...
Folder-Structure:
|- project
| |- app_main
| | |- templates
| | | |- app_main
| | | | |- main.html
| |- app_1
| | |- frontend_1 (react)
| | | |- public
| | | | |- index.html
| |- app_2
| | |- frontend_2 (react)
| | | |- public
| | | | |- index.html
Как я понял - или по крайней мере так думаю - папка с html-файлами должна быть включена в template в settings.py...
settings.py
REACT_ROUTE_APP_1 = os.path.join(BASE_DIR, 'app_1', 'frontend_1', 'public')
REACT_ROUTE_APP_2 = os.path.join(BASE_DIR, 'app_2', 'frontend_2', 'public')
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
REACT_ROUTE_APP_1,
REACT_ROUTE_APP_2
],
'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',
],
},
},
]
Правильный ли это способ или есть гораздо лучшее решение? И если это правильный выбор, то как я могу подключить url-маршрут внутри моего сайта?
main.html
<div>
<a href="?">Link to App 1</a>
<a href="?">Link to App 2</a>
</div>
Хотя я думал, что Django & React будет популярной комбинацией, я нашел только несколько связанных статей!
Спасибо за помощь и советы и удачной недели!
Ваша структура папок в порядке, вам следует использовать URL-маршрутизатор для перенаправления из основного приложения в другие приложения
main urls.py
urlpatterns = [
path("", include('main.urls')),
path("app_1/", include('app_1.urls')),
path("app_2", include('app_2.urls')),
]
И в вашем app_1 urls.py :
urlpatterns = [
path('',(TemplateView.as_view(
template_name="app_1/index.html",
)), name='index.html'),
]
html
<div>
#URI + "app_1"
<a href="app_1">Link to App 1</a>
</div>