#reactjs #django #react-router
Вопрос:
Доброе утро,
Я хотел бы спросить, возможно ли подключить несколько приложений в django, каждое из которых использует свой собственный интерфейс react? Например: У меня есть одна главная страница, на которой содержатся все ссылки на различные приложения…
Структура папок:
|- 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-файлами должна быть включена в шаблон в 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
lt;divgt; lt;a href="?"gt;Link to App 1lt;/agt; lt;a href="?"gt;Link to App 2lt;/agt; lt;/divgt;
Несмотря на то, что я думал, что Django и Reactwo будут популярным сочетанием, я нашел только несколько статей по теме!
Спасибо за вашу помощь и советы, и желаю вам отличной недели!
Ответ №1:
Ваша структура папок в порядке , вы должны использовать URL-маршрутизатор для перенаправления из основного приложения в другие приложения
главная urls.py
urlpatterns = [ path("", include('main.urls')), path("app_1/", include('app_1.urls')), path("app_2", include('app_2.urls')), ]
И в вашем приложении_1 urls.py :
urlpatterns = [ path('',(TemplateView.as_view( template_name="app_1/index.html", )), name='index.html'), ]
HTML
lt;divgt; #URI "app_1" lt;a href="app_1"gt;Link to App 1lt;/agt; lt;/divgt;