Maison >développement back-end >Tutoriel Python >Créez des applications Web internationales à l'aide du framework FastAPI

Créez des applications Web internationales à l'aide du framework FastAPI

PHPz
PHPzoriginal
2023-09-29 15:53:081374parcourir

Créez des applications Web internationales à laide du framework FastAPI

Utilisez le framework FastAPI pour créer des applications Web internationales

FastAPI est un framework Web Python hautes performances qui combine des annotations de type Python et un support asynchrone hautes performances pour rendre le développement d'applications Web plus simple, plus rapide et fiable. Lors de la création d'une application Web internationale, FastAPI fournit des outils et des concepts pratiques qui permettent à l'application de prendre facilement en charge plusieurs langues.

Ci-dessous, je vais donner un exemple de code spécifique sur la façon d'utiliser le framework FastAPI pour créer une application Web prenant en charge l'internationalisation :

  1. Tout d'abord, nous devons installer FastAPI et les bibliothèques dépendantes correspondantes. Vous pouvez utiliser pip pour installer :
pip install fastapi[all]
  1. Créez un fichier app.py pour définir l'application Web :
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. Créez un dossier de traductions dans le répertoire racine du projet et créez-y un dossier en, en utilisant Pour stocker l'anglais fichiers de traduction. Créez un fichier messages.po dans le dossier en pour définir la traduction anglaise :
msgid "Hello"
msgstr "Hello"

msgid "Submit"
msgstr "Submit"
  1. Créez un fichier index.html dans le dossier templates pour définir le modèle de page :
<!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. Démarrez l'application :
uvicorn app:app --reload

Vous Vous pouvez visualiser l'application en visitant http://localhost:8000. La langue par défaut est l'anglais. Vous pouvez changer de langue via le paramètre URL langue, tel que http://localhost:8000/?langue. =zh . language来切换语言,比如http://localhost:8000/?language=zh。

以上示例中,我们使用了FastAPI提供的国际化中间件,通过在HTTP请求头中添加Accept-Language来指定用户的语言偏好,从而实现多语言支持。在应用中我们使用了Jinja2模板引擎来渲染页面,通过在模板中使用{{ _('xxx') }}

Dans l'exemple ci-dessus, nous utilisons le middleware d'internationalisation fourni par FastAPI pour spécifier la préférence linguistique de l'utilisateur en ajoutant Accept-Language dans l'en-tête de la requête HTTP pour obtenir une prise en charge multilingue. Dans l'application, nous utilisons le moteur de modèle Jinja2 pour afficher la page et introduisons la traduction en utilisant {{ _('xxx') }} dans le modèle.

Grâce à l'exemple ci-dessus, nous pouvons facilement créer une application Web prenant en charge l'internationalisation dans le cadre FastAPI, offrant une meilleure expérience utilisateur et des services globaux. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn