DJango with Code Dependency Injection using PyCDI
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
demo2
demo3
django_pycdi
.gitignore django demo Feb 2, 2017
.travis.yml
CODE_OF_CONDUCT.md
LICENSE
Makefile
README.rst
codecov.yml
setup.py

README.rst

Django + PyCDI

https://travis-ci.org/ettoreleandrotognoli/django-pycdi.svg?branch=master

A middleware to integrate PyCDI with Django.

See the code of conduct.

Install

Install pypi version

pip install django_pycdi

Install lastest version

pip install git+https://github.com/ettoreleandrotognoli/django-pycdi.git

Usage

Add middleware to settings.py:

MIDDLEWARE += ['django_pycdi.middlewares.CDIMiddleware']

Add inject decorator to your views:

With Python 2:

from random import random
from django.http import HttpResponse
from pycdi import Inject, Producer
from pycdi.utils import Singleton


@Singleton()
class MySingleton():
    pass

@Producer(float)
def get_a_float():
    return random()

@Inject(singleton=MySingleton,number=float)
def view(request,singleton,number):
    return HttpResponse('...')

In the demo3 folder has a django demo project using python2 with more examples.

With Python 3:

from random import random
from django.http import HttpResponse
from pycdi import Inject, Producer
from pycdi.utils import Singleton

@Singleton()
class MySingleton():
    pass

@Producer()
def get_a_float() -> float:
    return random()

@Inject()
def view(request,singleton:MySingleton,number:float):
    return HttpResponse('...')

In the demo3 folder has a django demo project using python3 with more examples.

See more ways to use PyCDI in its page.