mirror of
				https://github.com/ets-labs/python-dependency-injector.git
				synced 2025-10-31 16:07:51 +03:00 
			
		
		
		
	* Bump version to 4.3.9: FastAPI example * Reengineer wiring * Add @inject decorator * Add .workspace dir to gitignore * Add generic typing for @inject * Add type cast for @inject * Update movie lister example * Update cli application tutorial * Update demo example * Update wiring docs and examples * Update aiohttp example and tutorial * Update multiple containers example * Update single container example * Update decoupled packages example * Update django example * Update asyncio daemon example and tutorial * Update FastAPI example * Update flask example and tutorial * Update sanic example * Add wiring registry * Add new line to .gitignore * Add @inject to the test samples * Fix flake8 errors
		
			
				
	
	
		
			114 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
| Django + Dependency Injector Example
 | |
| ====================================
 | |
| 
 | |
| This is a `Django <https://www.djangoproject.com/>`_ +
 | |
| `Dependency Injector <https://python-dependency-injector.ets-labs.org/>`_ example application.
 | |
| 
 | |
| The example application helps to search for repositories on the Github.
 | |
| 
 | |
| .. image:: screenshot.png
 | |
| 
 | |
| Run
 | |
| ---
 | |
| 
 | |
| Create virtual environment:
 | |
| 
 | |
| .. code-block:: bash
 | |
| 
 | |
|    virtualenv venv
 | |
|    . venv/bin/activate
 | |
| 
 | |
| Install requirements:
 | |
| 
 | |
| .. code-block:: bash
 | |
| 
 | |
|     pip install -r requirements.txt
 | |
| 
 | |
| Run migrations:
 | |
| 
 | |
| .. code-block:: bash
 | |
| 
 | |
|    python manage.py migrate
 | |
| 
 | |
| To run the application do:
 | |
| 
 | |
| .. code-block:: bash
 | |
| 
 | |
|    python manage.py runserver
 | |
| 
 | |
| The output should be something like:
 | |
| 
 | |
| .. code-block::
 | |
| 
 | |
|    Watching for file changes with StatReloader
 | |
|    Performing system checks...
 | |
| 
 | |
|    System check identified no issues (0 silenced).
 | |
|    October 05, 2020 - 03:17:05
 | |
|    Django version 3.1.2, using settings 'githubnavigator.settings'
 | |
|    Starting development server at http://127.0.0.1:8000/
 | |
|    Quit the server with CONTROL-C.
 | |
| 
 | |
| After that visit http://127.0.0.1:8000/ in your browser.
 | |
| 
 | |
| .. note::
 | |
| 
 | |
|    Github has a rate limit. When the rate limit is exceed you will see an exception
 | |
|    ``github.GithubException.RateLimitExceededException``. For unauthenticated requests, the rate
 | |
|    limit allows for up to 60 requests per hour. To extend the limit to 5000 requests per hour you
 | |
|    need to set personal access token.
 | |
| 
 | |
|    It's easy:
 | |
| 
 | |
|    - Follow this `guide <https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token>`_ to create a token.
 | |
|    - Set a token to the environment variable:
 | |
| 
 | |
|    .. code-block:: bash
 | |
| 
 | |
|       export GITHUB_TOKEN=<your token>
 | |
| 
 | |
|    - Restart the app with ``python manage.py runserver``
 | |
| 
 | |
|    `Read more on Github rate limit <https://developer.github.com/v3/#rate-limiting>`_
 | |
| 
 | |
| Test
 | |
| ----
 | |
| 
 | |
| This application comes with the unit tests.
 | |
| 
 | |
| To run the tests do:
 | |
| 
 | |
| .. code-block:: bash
 | |
| 
 | |
|    coverage run --source='.' manage.py test && coverage report
 | |
| 
 | |
| The output should be something like:
 | |
| 
 | |
| .. code-block::
 | |
| 
 | |
|    Creating test database for alias 'default'...
 | |
|    System check identified no issues (0 silenced).
 | |
|    ..
 | |
|    ----------------------------------------------------------------------
 | |
|    Ran 2 tests in 0.037s
 | |
| 
 | |
|    OK
 | |
|    Destroying test database for alias 'default'...
 | |
|    Name                            Stmts   Miss  Cover
 | |
|    ---------------------------------------------------
 | |
|    githubnavigator/__init__.py         4      0   100%
 | |
|    githubnavigator/asgi.py             4      4     0%
 | |
|    githubnavigator/containers.py       7      0   100%
 | |
|    githubnavigator/services.py        14      0   100%
 | |
|    githubnavigator/settings.py        23      0   100%
 | |
|    githubnavigator/urls.py             3      0   100%
 | |
|    githubnavigator/wsgi.py             4      4     0%
 | |
|    manage.py                          12      2    83%
 | |
|    web/__init__.py                     0      0   100%
 | |
|    web/apps.py                         7      0   100%
 | |
|    web/tests.py                       28      0   100%
 | |
|    web/urls.py                         3      0   100%
 | |
|    web/views.py                       12      0   100%
 | |
|    ---------------------------------------------------
 | |
|    TOTAL                             121     10    92%
 |