Tengo 3 carpetas en una aplicación web Django. Las carpetas son las siguientes: la carpeta que contiene settings.py (proyecto), la carpeta que contiene models.py (aplicación) y una carpeta que contiene una aplicación de reacción frontal creada por create-react-app.
Me gustaría construir la interfaz de reacción, copiar los artefactos de construcción en una carpeta estática y luego ejecutar la aplicación django en heroku, pero han hecho que este proceso sea prácticamente imposible con mi estructura de carpetas actual. La alternativa es aplanar la aplicación de reacción y tener build, src, node_modules, packagejson, etc, etc, todo en la raíz del proyecto, pero esto parece realmente malo.
Algunas configuraciones en settings.py:
STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, 'static'), os.path.join(BASE_DIR, 'front-end/build/static'))
Lo que ejecuto localmente dentro del front-end:
npm run buildLo que estoy devolviendo de las vistas:
def index(request): return HttpResponse(loader.get_template('build/index.html').render()) #above line returns index.html that is generated by npm run build¿Cómo implemento el proyecto descrito anteriormente en Heroku para que pueda encontrar todos los recursos estáticos?
Puede usar un enlace simbólico que coloca la salida de compilación de su reacción en su directorio django
Por ejemplo, si la estructura de su directorio es así:
~/project_root/ ~/project_root/django/static/ ~/project_root/my_react_app/build cd a ~/project_root/django/static/ y ejecutar
ln -s ../../my_react_app/build . Esto creará ~/project_root/django/static/build que apunta a ~/project_root/my_react_app/build