Ir para o conteúdo

Contexto

O Context é um objecto único para o Lilya. O context é um parâmetro que pode ser usado dentro dos handlers e fornece informações adicionais que pode precisar por qualquer motivo específico.

A abordagem é muito parecida ao Request em termos de implementação, mas não é a mesma coise. Na realidade, um context contém também o 'request' e informações sobre o próprio handler.

Importar é tão simples como:

from lilya.context import Context

A classe Context

Pode-se considerar o context como o contexto do pedido de um determinado handler. Isto também significa que, quando um handler (visualização) é declarado, todas as informações passadas para ele estão automaticamente acessíveis por meio do parâmetro context.handler.

from lilya.context import Context
from lilya.responses import make_response


def home(context: Context):
    """
    Accessing the context object.
    """
    return make_response(content=None, status_code=204)

O context também fornece o acesso ao objecto request, bem como às configurações da applicação e outras funções.

Isso significa que, se desejar passar um request e um context, na realidade só precisa do context, pois o pedido já está disponível internamente, mas mesmo assim, se desejar, pode passar ambos.

Example

from lilya.apps import Lilya
from lilya.context import Context
from lilya.routing import Path


def read_context(context: Context, id: str):
    host = context.request.client.host

    context_data = context.get_context_data()
    context.add_to_context("name", "Lilya")

    context_data = context.get_context_data()
    context_data.update({
        "host": host, "user_id": id
    })
    return context_data


app = Lilya(
    routes=[
        Path("/users/{id}", read_request)
    ]
)

O contexto torna-se especialmente útil quando precisa de aceder a informações do handler que não estão disponíveis após a instanciação do mesmo. Por exemplo, é útil quando se acede à context.settings para obter as configurações da aplicação, oferecendo uma abordagem versátil para as aceder.

Atributos

Handler

A função handler que é responsável pelo pedido.

from lilya.context import Context
from lilya.responses import Response


def home(context: Context):
    handler = context.handler

    return Response("Ok")

Pedido

O pedido a ser usado no âmbito do handler.

from lilya.context import Context
from lilya.responses import Response


def home(context: Context):
    request = context.request

    return Response("Ok")

Utilizador

O utilizador alocado ao pedido.

from lilya.context import Context
from lilya.responses import Response


def home(context: Context):
    user = context.user

    return Response("Ok")

Utilizador

O utilizador alocado ao pedido.

from lilya.context import Context
from lilya.responses import Response


def home(context: Context):
    user = context.user

    return Response("Ok")

Configurações

As configurações sendo usadas pela aplicação Lilya.

Podem ser as configurações globais ou se um settings_module foi fornecido, retorna essas mesmas configurações.

from lilya.context import Context
from lilya.responses import Response


def home(context: Context):
    settings = context.settings

    return Response("Ok")

Âmbito

O âmbito do handler da aplicação.

from lilya.context import Context
from lilya.responses import Response


def home(context: Context):
    scope = context.scope

    return Response("Ok")

Aplicação

A aplicação Lilya.

from lilya.context import Context
from lilya.responses import Response


def home(context: Context):
    app = context.app

    return Response("Ok")

Métodos

O context também fornece diferentes funções para manipular o objecto.

get_context_data

Contexto

O contexto da aplicação. Pode ser especialmente útil ao trabalhar com templates.

from lilya.context import Context
from lilya.responses import Response


def home(context: Context):
    context = context.get_context_data()

    return Response("Ok")

add_to_context

Adiciona valores ao contexto atual.

from lilya.context import Context
from lilya.responses import Response


def home(context: Context):
    context.add_to_context("call", "ok")

    return Response("Ok")

path_for

Obtém o caminho de um handler específico.

from lilya.context import Context
from lilya.responses import Response


def home(context: Context):
    url = context.path_for("/home")

    return Response(url)