Home >Backend Development >Python Tutorial >Build international web applications using the FastAPI framework
Use the FastAPI framework to build international Web applications
FastAPI is a high-performance Python Web framework that combines Python type annotations and high-performance asynchronous support , making developing web applications easier, faster and more reliable. When building an international Web application, FastAPI provides convenient tools and concepts that can make the application easily support multiple languages.
Below I will give a specific code example to introduce how to use the FastAPI framework to build a web application that supports internationalization:
pip install fastapi[all]
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}
msgid "Hello" msgstr "Hello" msgid "Submit" msgstr "Submit"
<!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>
uvicorn app:app --reload
You can view the application by accessing http://localhost:8000. The default language is English and you can pass the URL parameters language
to switch languages, such as http://localhost:8000/?language=zh.
In the above example, we use the internationalization middleware provided by FastAPI to specify the user's language preference by adding Accept-Language in the HTTP request header to achieve multi-language support. In the application, we use the Jinja2 template engine to render the page, and introduce translation by using {{ _('xxx') }}
in the template.
Through the above examples, we can easily build a web application that supports internationalization under the FastAPI framework to provide a better user experience and global services.
The above is the detailed content of Build international web applications using the FastAPI framework. For more information, please follow other related articles on the PHP Chinese website!