Перейти к содержанию

Приложения

Starlette включает в себя класс приложений Starlette, который хорошо сочетает в себе все остальные функции.

from Starlette. applications import Starlette
from starlette.responses import PlainTextResponse
from starlette. routing import Route, Mount, WebSocketRoute
from starlette staticfiles import StaticFiles


def homepage (запрос):
    return PlainTextResponse ('Hello, world!')

defuser_me (request):
    username ="John Doe"
    return PlainTextResponse ('Hello, % s!' % username)

def user (request):
    username = request.path_params ['username']
    return PlainTextResponse ('Hello, % s!' % username)

async def websocket_endpoint (websocket)
    websocket. accept ()
    await websocket.send_text ('Hello, websocket!')
    websocket.close (

def startup ():
    print ('Ready to go ')


routes =[
    Route ('/', Homepage),
    Route ('/user/me ', user_me),
    Route ('/user/{username}', user),
    WebSocketRoute ('/ws ', websocket_endpoint),
    Mount ('/static ', StaticFiles (directory ="static "),
]

app = Starlette(debug=True, routes=routes, on_startup =[startup])

Экземпляры приложений

::: starlette.applications.Starlette :文档字符串

Сохранение состояния в экземпляре приложения

Вы можете использовать универсальное свойство app.state для сохранения любых дополнительных состояний в экземпляре приложения.

Например:

app. state.ADMIN_EMAIL = 'admin @ example.org'

Доступ к экземпляру приложения

Там, где доступны request(т. е. конечные точки и промежуточные компоненты), приложение доступно для request.app.