Django で FastAPI を使用することは可能ですか? 質問する

Django で FastAPI を使用することは可能ですか? 質問する

私は Django 開発者ですが、最近 FastAPI フレームワークに出会いました。

そこで、試してみることにしました。しかし、通常、Django で RESTful API を構築する場合は、Django Rest Framework (DRF) を使用します。

asyncORM などの Django の特典を使用して DRF を FastAPI に置き換え、FastAPI のすべての機能にアクセスできるかどうか知っている人はいますか?

今のところ、これに関する記事は 1 つしか見つかりません。しかし、統合の過程で、著者は FastAPI のほとんどの機能を失ってしまいました。こちらからご覧いただけます

FastAPIのドキュメントでは、特定のリクエストをWSGIアプリケーションにリダイレクトできることが記載されています。ここ

ベストアンサー1

短い答え

はい、そうです可能WSGIMiddleware

例えば、Djangoのすべての機能 (はい、管理者も)取り付けて、これでサンプルコード

import os
from importlib.util import find_spec

from configurations.wsgi import get_wsgi_application
from fastapi import FastAPI
from fastapi.middleware.wsgi import WSGIMiddleware
from fastapi.staticfiles import StaticFiles

from api import router

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
os.environ.setdefault("DJANGO_CONFIGURATIN", "Localdev")

application = get_wsgi_application()

app = FastAPI()
app.mount("/admin", WSGIMiddleware(application))
app.mount("/static",
    StaticFiles(
         directory=os.path.normpath(
              os.path.join(find_spec("django.contrib.admin").origin, "..", "static")
         )
   ),
   name="static",
)

こちらもWSGIMiddleware ドキュメント、これはもっとわかりやすい例です(これは Flask 用ですが、同じ考え方を示しています。)。

from fastapi import FastAPI
from fastapi.middleware.wsgi import WSGIMiddleware
from flask import Flask, escape, request

flask_app = Flask(__name__)


@flask_app.route("/")
def flask_main():
    name = request.args.get("name", "World")
    return f"Hello, {escape(name)} from Flask!"


app = FastAPI()


@app.get("/v2")
def read_main():
    return {"message": "Hello World"}


app.mount("/v1", WSGIMiddleware(flask_app))

おすすめ記事