簡體   English   中英

如何使用 Django 為 Flutter web 應用程序提供服務?

[英]How to serve a Flutter web app with Django?

在構建 flutter web 應用程序

flutter build web

我想使用簡單的 Django 服務器為應用程序提供服務。 我怎樣才能做到這一點?

運行命令后,將 flutter 項目中的build\web目錄復制到您的 django 項目中。 假設您將其放在根目錄並將其重命名為flutter_web_app

所以我們有,

djangoproject
  | djangoproject
       | settings.py
       | urls.py
       | ...
  | flutter_web_app
  | ... 
  | other apps

現在編輯flutter_web_app/index.html中的base標簽,給應用程序一個前綴。 請注意,前綴/基礎應以/開頭和結尾。

<head>
...

    <base href="/flutter_web_app/">

...
</head>

現在,在您的djangoproject/urls.py中,匹配前綴並為您的 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),
]

在本地運行,url 127.0.0.1/flutter_web_app將為我們的flutter_web_app/index.html服務。

flutter 應用程序所需的所有文件都以flutter_web_app為前綴。 例如。 main.dart.js通過 GET 請求到flutter_web_app/main.dart.js 我們將前綴后面的路徑提取為resource ,並從flutter_web_app目錄( flutter_redirect函數)提供相應的文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM