Buenos Dias,
Me gustaría preguntar si es posible conectar varias aplicaciones en django, cada una usando su propia interfaz de reacción. Por ejemplo: tengo una página principal que contiene todos los enlaces a las diferentes aplicaciones...
Estructura de carpetas:
|- project | |- app_main | | |- templates | | | |- app_main | | | | |- main.html | |- app_1 | | |- frontend_1 (react) | | | |- public | | | | |- index.html | |- app_2 | | |- frontend_2 (react) | | | |- public | | | | |- index.htmlSegún entendí, o al menos eso creo, la carpeta que contiene los archivos html debe incluirse dentro de la plantilla en settings.py ...
configuración.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', ], }, }, ]¿Es esta la forma correcta o hay una solución mucho mejor? Y si es la elección correcta, ¿cómo puedo conectar la ruta de URL dentro de mi?
principal.html
<div> <a href="?">Link to App 1</a> <a href="?">Link to App 2</a> </div>Aunque pensé que Django y React serían una combinación popular, ¡solo encontré algunos artículos relacionados!
Gracias por su ayuda y consejos y que tenga una gran semana!
La estructura de su carpeta está bien, debe usar el enrutador de URL para redirigir desde la aplicación principal a otras aplicaciones
URL principal.py
urlpatterns = [ path("", include('main.urls')), path("app_1/", include('app_1.urls')), path("app_2", include('app_2.urls')), ]Y en tu 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>