Django user for async frameworks
Project description
Async Django Session
Using django user with async frameworks like aiohttp, starlette etc.
pip install async-django-session async-django-user
tl;dr
Take a look at registration / authorization examples for aiohttp + databases or starlette + asyncpg.
API
Backends
There's two ways of communicating to database available:
- through databases - which is compatible with most of major RDBMS:
database = databases.Database(DB_URI) await database.connect() backend = async_django_user.databases.Backend(database, SECRET_KEY)
- or directly through asyncpg (PostgreSQL only):
pool = await asyncpg.create_pool(DB_URI) backend = async_django_user.asyncpg.Backend(pool, SECRET_KEY)
User
To fetch an user from db by its id stored in [django session] there's
backend.get_user_from_session
method:
user = backend.get_user_from_session(session)
It's lazy so the user data won't be actually fetched until you call its
load
method. It caches the result, so it's inexpensive to call it multiple
times:
await user.load()
User provides dict interface to it's data (eg user["username"]
) and a few
methods:
await user.authenticate(username, password)
- checks credentials and populates the user from database if they're validuser.login()
- sets session variables logging the user inuser.logout()
- clears the session dataawait user.set_password(password)
- sets a new password for the userawait user.save([fields])
- saves the whole user or a particular set of its fieldsawait register()
- saves a new user into db
Frameworks integration
There's built-in middlewares for a few async frameworks to automatically load user of the current request. Take a look at examples folder for:
Running examples
Running the examples you can see different frameworks using the same session and user data.
Install the requirements:
cd examples
pip install -r requirements.txt
Create database and tables:
createdb async_django_session
python django_app.py migrate
Create a user:
python django_app.py createsuperuser
Run aiohttp example which uses databases backend:
python aiohttp_app.py
Run starlette example which uses asyncpg backend:
python starlette_app.py
Run django example:
python django_app.py runserver
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for async_django_user-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | caff3115aa87594efb5fa476e038afabdf52ab9973bec544e0a4561f5a4af67e |
|
MD5 | a2a6d7aa67167e0a88946d84c23bed22 |
|
BLAKE2b-256 | 201e499514a2314176868782cb2b0ebab7476b7659527315ef5aa592ef270817 |