>백엔드 개발 >파이썬 튜토리얼 >FastAPI 프레임워크를 사용하여 국제적인 웹 애플리케이션 구축

FastAPI 프레임워크를 사용하여 국제적인 웹 애플리케이션 구축

PHPz
PHPz원래의
2023-09-29 15:53:081378검색

FastAPI 프레임워크를 사용하여 국제적인 웹 애플리케이션 구축

FastAPI 프레임워크를 사용하여 국제 웹 애플리케이션 구축

FastAPI는 Python 유형 주석과 고성능 비동기 지원을 결합하여 웹 애플리케이션 개발을 더 간단하고 빠르며 안정적으로 만드는 고성능 Python 웹 프레임워크입니다. 국제적인 웹 애플리케이션을 구축할 때 FastAPI는 애플리케이션이 여러 언어를 쉽게 지원할 수 있도록 하는 편리한 도구와 개념을 제공합니다.

아래에서는 FastAPI 프레임워크를 사용하여 국제화를 지원하는 웹 애플리케이션을 구축하는 방법에 대한 구체적인 코드 예제를 제공합니다.

  1. 먼저 FastAPI와 해당 종속 라이브러리를 설치해야 합니다. pip를 사용하여 설치할 수 있습니다:
pip install fastapi[all]
  1. 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. 프로젝트 루트 디렉터리에 번역 폴더를 만들고 그 안에 영어 저장을 사용하여 en 폴더를 만듭니다. 번역 파일. en 폴더에 message.po 파일을 만들어 영어 번역을 정의하세요:
msgid "Hello"
msgstr "Hello"

msgid "Submit"
msgstr "Submit"
  1. templates 폴더에 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

You http://localhost:8000을 방문하면 애플리케이션을 볼 수 있습니다. 기본 언어는 영어입니다. http://localhost:8000/?언어와 같은 URL 매개변수 언어를 통해 언어를 전환할 수 있습니다. =zh . language来切换语言,比如http://localhost:8000/?language=zh。

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

위의 예에서는 FastAPI에서 제공하는 국제화 미들웨어를 사용하여 다국어 지원을 달성하기 위해 HTTP 요청 헤더에 Accept-Language를 추가함으로써 사용자의 언어 기본 설정을 지정합니다. 애플리케이션에서는 Jinja2 템플릿 엔진을 사용하여 페이지를 렌더링하고 템플릿에서 {{ _('xxx') }}를 사용하여 번역을 도입합니다.

위의 예를 통해 FastAPI 프레임워크에서 국제화를 지원하는 웹 애플리케이션을 쉽게 구축하여 더 나은 사용자 경험과 글로벌 서비스를 제공할 수 있습니다. 🎜

위 내용은 FastAPI 프레임워크를 사용하여 국제적인 웹 애플리케이션 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.