ホームページ  >  記事  >  バックエンド開発  >  FastAPI フレームワークを使用して国際的な Web アプリケーションを構築する

FastAPI フレームワークを使用して国際的な Web アプリケーションを構築する

PHPz
PHPzオリジナル
2023-09-29 15:53:081301ブラウズ

FastAPI フレームワークを使用して国際的な Web アプリケーションを構築する

FastAPI フレームワークを使用して国際的な Web アプリケーションを構築する

FastAPI は、Python 型の注釈と高性能の非同期サポートを組み合わせた高性能 Python Web フレームワークであり、開発を容易にします。 Web アプリケーションをより簡単、より速く、より信頼性の高いものにします。国際的な Web アプリケーションを構築する場合、FastAPI は、アプリケーションで複数の言語を簡単にサポートできる便利なツールと概念を提供します。

以下に、FastAPI フレームワークを使用して国際化をサポートする Web アプリケーションを構築する方法を紹介する具体的なコード例を示します。

  1. まず、FastAPI と対応する依存関係ライブラリ。 pip を使用してインストールできます:
pip install fastapi[all]
  1. Web アプリケーションを定義するための app.py ファイルを作成します:
from typing import Optional
from fastapi import FastAPI
from fastapi import Request, Depends
from fastapi.templating import Jinja2Templates
from fastapi.staticfiles import StaticFiles
from fastapi.responses import HTMLResponse
from starlette.templating import Jinja2Templates
from starlette.requests import Request
from fastapi.i18n import (
    I18nMiddleware, 
    get_accept_languages
)

app = FastAPI()

# 加载静态文件
app.mount("/static", StaticFiles(directory="static"), name="static")

# 初始化国际化中间件
app.add_middleware(I18nMiddleware, default_language="en", translation_directory="translations")

templates = Jinja2Templates(directory="templates")

# 通过GET方法获取主页面
@app.get("/", response_class=HTMLResponse)
async def read_root(request: Request, languages: str = Depends(get_accept_languages)):
    return templates.TemplateResponse("index.html", {"request": request, "languages": languages})

# 通过POST方法获取表单提交的数据并返回
@app.post("/form")
async def form_post(request: Request):
    form_data = await request.form()
    return {"data": form_data}
  1. プロジェクトのルート ディレクトリにtranslations フォルダーを作成し、その中に英語の翻訳ファイルを保存する en フォルダーを作成します。 en フォルダーにmessages.po ファイルを作成して英語翻訳を定義します:
msgid "Hello"
msgstr "Hello"

msgid "Submit"
msgstr "Submit"
  1. テンプレート フォルダーにindex.html ファイルを作成してページ テンプレートを定義します:
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>{{ _('Welcome to my website') }}</title>
</head>
<body>
    <h1>{{ _('Hello') }}</h1>
    <p>{{ _('This is a sample web application') }}</p>
    
    <form action="/form" method="post">
        <input type="text" name="name" placeholder="{{ _('Enter your name') }}">
        <button type="submit">{{ _('Submit') }}</button>
    </form>
    
    <h2>{{ _('Supported Languages') }}</h2>
    <ul>
    {% for language in languages %}
        <li><a href="/?language={{ language }}">{{ language }}</a></li>
    {% endfor %}
    </ul>
</body>
</html>
  1. アプリケーションの起動:
uvicorn app:app --reload

http://localhost:8000 にアクセスすると、アプリケーションを表示できます。デフォルトの言語は英語で、URL パラメータを渡すことができます language を使用して言語を切り替えます (http://localhost:8000/? language=zh など)。

上記の例では、FastAPI が提供する国際化ミドルウェアを使用して、HTTP リクエスト ヘッダーに Accept-Language を追加することでユーザーの言語設定を指定し、多言語サポートを実現しています。このアプリケーションでは、Jinja2 テンプレート エンジンを使用してページをレンダリングし、テンプレート内で {{ _('xxx') }} を使用して翻訳を導入します。

上記の例を通じて、FastAPI フレームワークの下で国際化をサポートする Web アプリケーションを簡単に構築し、より良いユーザー エクスペリエンスとグローバル サービスを提供できます。

以上がFastAPI フレームワークを使用して国際的な Web アプリケーションを構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。