Helper to develop Django projects.
Project description
manage_django_project
Helper to develop Django projects:
- Easy bootstrap a virtual environment:
- Just get the sources and call
./manage.py
- Only
python3-pip
andpython3-venv
package needed to bootstarp
- Just get the sources and call
- Alle Django manage commands useable as normal CLI and via
cmd2
shell cmd2
shell with autocomplete of all existing manage commands and all options- Auto switching Django settings between
local
andtests
settings. - Helpful manage commands for developing:
Included Django management commands:
code_style
- Check/Fix project code stylecoverage
- Run tests with coverage and reportinstall
- Just install the project as editable via pip (Useful if version has been changed)project_info
- Information about the current Django projectpublish
- Build a new release and publish it to PyPirun_dev_server
- Setup test project and run django developer serversafety
- Run safety check against current requirements filesshell
- Go into cmd2 shell with all registered Django manage commandstox
- Run tests via toxupdate_req
- Update project requirements via pip-tools
How to use it
Some steps are needed to use manage_django_project
in your project.
Here a overview and below details:
- add
manage_django_project
to your dev dependencies - You Django project should have separate settings for
prod
,local
andtests
(Last two ones are used bymanage_django_project
) - Add the bootstrap
manage.py
- Add a
__main__.py
with aManageConfig
and theexecute_django_from_command_line()
call. - Add the
__main__
-file as[project.scripts]
- Add the name of your
[project.scripts]
into bootstrapmanage.py
All examples below used manage_django_project_example
. You have to rename this string/path to your Django package name.
Full example is here: https://github.com/jedie/manage_django_project/tree/main/manage_django_project_example
If everything works as expected you can just call the ./manage.py
file and the magic happens ;)
main.py
Add a .../manage_django_project_example/__main__.py
file, looks like:
from pathlib import Path
import manage_django_project_example
from manage_django_project.config import ManageConfig
from manage_django_project.manage import execute_django_from_command_line
def main():
"""
entrypoint installed via pyproject.toml and [project.scripts] section.
Must be set in ./manage.py and PROJECT_SHELL_SCRIPT
"""
execute_django_from_command_line(
config=ManageConfig(
module=manage_django_project_example,
#
# Path that contains your `pyproject.toml`:
project_root_path=Path(manage_django_project_example.__file__).parent.parent,
#
# Django settings used for all commands except test/coverage/tox:
local_settings='manage_django_project_example.settings.local',
#
# Django settings used for test/coverage/tox commands:
test_settings='manage_django_project_example.settings.tests',
)
)
if __name__ == '__main__':
main()
pyproject.toml
[project.scripts]
manage_django_project_example = "manage_django_project_example.__main__:main"
./manage.py
Add a copy of manage.py file to your project source root.
Change only manage_django_project_example
in this line:
PROJECT_SHELL_SCRIPT = BIN_PATH / 'manage_django_project_example'
Start hacking
Just clone the project and start ./manage.py
to bootstrap a virtual environment:
# Install base requirements:
~$ sudo apt install python3-pip python3-venv
# Get the sources:
~$ git clone https://github.com/jedie/manage_django_project.git
~$ cd manage_django_project/
# Just call manage.py and the magic happen:
~/manage_django_project$ ./manage.py
# start local dev. web server:
~/django-for-runners$ ./manage.py run_dev_server
# run tests:
~/django-for-runners$ ./manage.py test
# or with coverage
~/django-for-runners$ ./manage.py coverage
# or via tox:
~/django-for-runners$ ./manage.py tox
history
- dev
- TBC
- v0.2.2 - 02.04.2023
- Ignore non
django.core.management.base.BaseCommand
based commands.
- Ignore non
- v0.2.1 - 16.03.2023
- Add more tests
- Enhance README
- Code cleanup
- v0.2.0 - 14.03.2023
- Add a optional shell via cmd2
- v0.1.1 - 13.03.2023
- Add
ProjectInfo.distribution_name
and set if frompyproject.toml
- publish command: Use
distribution_name
in publish call - publish command: Display used settings for
publish_package()
- Add
- v0.1.0 - 12.03.2023
- publish command: Bugfix test run before publishing: use the "test" settings
- coverage command: Remove a existing
.coverage
before create a new one
- v0.0.1 - 12.03.2023
- Init first version
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 Distribution
Built Distribution
Hashes for manage_django_project-0.2.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | f39d575c36ebb2af366cf62818454eab33328c3a1809590b4389ef31b865c21d |
|
MD5 | b23dc1ca11e0f92fce45214455d1a484 |
|
BLAKE2b-256 | 5a0028def4e07b1b181ee48e7d3aa10aaf0b5f537280f079dab164f493db4e44 |
Hashes for manage_django_project-0.2.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 262672cf1ef86cd0ae5ffe18e80de47d5f8b2fedb65c26c0d2377f6fab64a83b |
|
MD5 | 3ddedc13acc0c0a8c05ef000fdfa315a |
|
BLAKE2b-256 | 3806057b5d4a1d2376599015fc28bd9eb24afcc0e5f6c9760b81d35cf334c3f5 |