Después de construir una aplicación web flutter con
flutter build webQuiero servir la aplicación usando un servidor Django simple. ¿Cómo puedo hacer eso?
Después de ejecutar el comando, copie el directorio build\web del proyecto flutter a su proyecto django. Digamos que lo pones en la raíz y le cambias el nombre a flutter_web_app .
Entonces tenemos,
djangoproject | djangoproject | settings.py | urls.py | ... | flutter_web_app | ... | other apps Ahora edite la etiqueta base en flutter_web_app/index.html para darle un prefijo a la aplicación. Tenga en cuenta que el prefijo/base debe comenzar y terminar con / .
<head> ... <base href="/flutter_web_app/"> ... </head> Ahora, en su djangoproject/urls.py , haga coincidir el prefijo y sirva su aplicación flutter.
from django.urls import path from django.views.static import serve import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) FLUTTER_WEB_APP = os.path.join(BASE_DIR, 'flutter_web_app') def flutter_redirect(request, resource): return serve(request, resource, FLUTTER_WEB_APP) urlpatterns = [ ... path('flutter_web_app/', lambda r: flutter_redirect(r, 'index.html')), path('flutter_web_app/<path:resource>', flutter_redirect), ] Ejecutando esto localmente, la url 127.0.0.1/flutter_web_app servirá nuestro flutter_web_app/index.html .
Todos los archivos requeridos por la aplicación flutter tienen el prefijo flutter_web_app . Por ej. main.dart.js se solicita con un GET a flutter_web_app/main.dart.js . Extraemos la ruta después del prefijo como resource y servimos el archivo correspondiente del directorio flutter_web_app (función flutter_redirect ).