Django

#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;