Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ettoreleandrotognoli/django-pycdi
DJango with Code Dependency Injection using PyCDI
https://github.com/ettoreleandrotognoli/django-pycdi
cdi django injection python
Last synced: 3 months ago
JSON representation
DJango with Code Dependency Injection using PyCDI
- Host: GitHub
- URL: https://github.com/ettoreleandrotognoli/django-pycdi
- Owner: ettoreleandrotognoli
- License: bsd-3-clause
- Created: 2017-02-02T18:04:06.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2018-12-08T11:12:57.000Z (about 6 years ago)
- Last Synced: 2024-10-04T16:47:08.495Z (3 months ago)
- Topics: cdi, django, injection, python
- Language: Python
- Size: 19.5 KB
- Stars: 11
- Watchers: 3
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
Django + PyCDI
==============.. image:: https://travis-ci.org/ettoreleandrotognoli/django-pycdi.svg?branch=master
:target: https://travis-ci.org/ettoreleandrotognoli/django-pycdi.. image:: https://codecov.io/gh/ettoreleandrotognoli/django-pycdi/branch/master/graph/badge.svg
:target: https://codecov.io/gh/ettoreleandrotognoli/django-pycdi.. image:: https://badge.fury.io/py/django-pycdi.svg
:target: https://badge.fury.io/py/django-pycdi.. image:: https://img.shields.io/pypi/dm/django-pycdi.svg
:target: https://pypi.python.org/pypi/django-pycdi#downloadsA middleware to integrate PyCDI_ with Django_.
See the `code of conduct `_.
Install
-------Install pypi version
.. code-block :: shell
pip install django_pycdi
Install lastest version
.. code-block :: shell
pip install git+https://github.com/ettoreleandrotognoli/django-pycdi.git
Usage
-----Add middleware to settings.py:
.. code-block :: python
MIDDLEWARE += ['django_pycdi.middlewares.CDIMiddleware']Add inject decorator to your views:
With **Python 2**:
.. code-block :: python
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**:
.. code-block :: python
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.
.. _PyCDI: https://github.com/ettoreleandrotognoli/python-cdi
.. _Django: https://github.com/django/django