Welcome to django-request-vars’s documentation!

Application that stores current request, user and your defined data in thread local variable.

Installation

Install using pip:

$ pip install django-request-vars

Add to installed apps:

INSTALLED_APPS = (
    ...
    'request_vars',
    ...
)

Add middleware:

MIDDLEWARE = [
    ...
    'request_vars.middleware.RequestVarsMiddleware',
    ...
]

Usage

Get variable

from request_vars.utils import get_variable

get_variable('request')
get_variable('some_variable', 'default_value')

Set variable

from request_vars.utils import set_variable

set_variable('some_variable', 'some_value')

Delete variable

from request_vars.utils import del_variable

del_variable('some_variable')

Set variables in middleware

By default request and user already stored in thread local. If you need to store another variables use middleware callback:

Define path to your function in settings:

REQUEST_VARS_MIDDLEWARE_CALLBACK = 'path.to.callback_function'

Define function:

from request_vars.utils import set_variable

def callback_function(request):
    set_variable('current_path', request.path)

Request cache decorator

Allow to cache function until request complete:

from request_vars.decorators import request_cache

@request_cache
def some_function(a):
    print(a)

# some_function(1)
# > 1
# some_function(2)
# > 1

Templatetags

Django

{% load request_vars %}

{% get_variable 'some_variable' 'default' as var %}

Jinja2

If you use django-jinja:

{% set var = get_variable('some_variable', 'default') %}

If you use jinja2 backend, then define it in environment:

from jinja2 import Environment
from request_vars.utils import get_variable

def environment(**options):
    env = Environment(**options)
    env.globals.update({
        ...
        'get_variable': get_variable,
        ...
    })
    return env

Changelog

Version 1.0.0 (2018-05-13)

Release

Indices and tables