This library uses adapters to implement the “I/O parts”, namely reading and writing headers from HTTP requests and response. To adapt this library to a new framework it is neccessary to subclass BaseAdapter and then initialize unpoly.up.Unpoly with it. Since unpoly.up.Unpoly is initialized once per request, it makes sense to pass the request to the adapter via init, but there is no requirement for this – the adapter could simply access the request via thread-locals or other means.

As an example the usage with the builtin Django Adapter looks like this:

from unpoly import Unpoly
from unpoly.contrib.django import DjangoAdapter
# The following code is run in a middleware, once per request
adapter = DjangoAdapter(request)
# Attach `Unpoly` to the request, so views can easily acces it
request.up = Unpoly(adapter)
# Actually execute the view and get the response object
response = handle_view(request)
# Tell `Unpoly` to set the relevant `X-Up-*` headers
class unpoly.adapter.BaseAdapter

Provides the entrypoint for other frameworks to use this library.

Implements common functionality that is not often overriden as well as framework specific hooks.

deserialize_data(data: str) object

Deserializes data passed in by Unpoly.

By default it simply reads it as JSON, but can be overriden if custom decoders are needed.

property location: str

Exposes the current request’s location (path including query params)

Needs to be implemented.

property method: str

Exposes the current request’s method (GET/POST etc)

Needs to be implemented.

redirect_uri(response: Any) str | None

Returns the redirect target of a response or None if the response is not a redirection (ie if it’s status code is not in the range 300-400).

Needs to be implemented.

request_headers() Mapping[str, str]

Reads the request headers from the current request.

Needs to be implemented.

request_params() Mapping[str, str]

Reads the GET params from the current request.

Needs to be implemented.

serialize_data(data: object) str

Serializes the data for passing it to Unpoly.

By default it simply serializes it as JSON, but can be overriden if custom encoders are needed.

Set or delete the _up_method cookie.

The implementation should set the cookie if needs_cookie is True and otherwise remove it if set.

Needs to be implemented.

set_headers(response: Any, headers: Mapping[str, str]) None

Set headers like X-Up-Location on the current response.

Needs to be implemented.

set_redirect_uri(response: Any, uri: str) None

Set a new redirect target for the current response. This is used to pass unpoly parameters via GET params through redirects.

Needs to be implemented.