Skip to main content

Helper to develop Django projects.

Project description

manage_django_project

tests codecov manage_django_project @ PyPi Python Versions License GPL-3.0-or-later

Helper to develop Django projects:

  • Easy bootstrap a virtual environment:
    • Just get the sources and call ./manage.py
    • Only python3-pip and python3-venv package needed to bootstarp
  • 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 and tests settings.
  • Helpful manage commands for developing:

Included Django management commands:

  • code_style - Check/Fix project code style
  • coverage - Run tests with coverage and report
  • install - Just install the project as editable via pip (Useful if version has been changed)
  • project_info - Information about the current Django project
  • publish - Build a new release and publish it to PyPi
  • run_dev_server - Setup test project and run django developer server
  • safety - Run safety check against current requirements files
  • shell - Go into cmd2 shell with all registered Django manage commands
  • tox - Run tests via tox
  • update_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 and tests (Last two ones are used by manage_django_project)
  • Add the bootstrap manage.py
  • Add a __main__.py with a ManageConfig and the execute_django_from_command_line() call.
  • Add the __main__-file as [project.scripts]
  • Add the name of your [project.scripts] into bootstrap manage.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.
  • 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 from pyproject.toml
    • publish command: Use distribution_name in publish call
    • publish command: Display used settings for publish_package()
  • 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

manage_django_project-0.2.2.tar.gz (32.6 kB view details)

Uploaded Source

Built Distribution

manage_django_project-0.2.2-py3-none-any.whl (45.4 kB view details)

Uploaded Python 3

File details

Details for the file manage_django_project-0.2.2.tar.gz.

File metadata

  • Download URL: manage_django_project-0.2.2.tar.gz
  • Upload date:
  • Size: 32.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for manage_django_project-0.2.2.tar.gz
Algorithm Hash digest
SHA256 f39d575c36ebb2af366cf62818454eab33328c3a1809590b4389ef31b865c21d
MD5 b23dc1ca11e0f92fce45214455d1a484
BLAKE2b-256 5a0028def4e07b1b181ee48e7d3aa10aaf0b5f537280f079dab164f493db4e44

See more details on using hashes here.

File details

Details for the file manage_django_project-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for manage_django_project-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 262672cf1ef86cd0ae5ffe18e80de47d5f8b2fedb65c26c0d2377f6fab64a83b
MD5 3ddedc13acc0c0a8c05ef000fdfa315a
BLAKE2b-256 3806057b5d4a1d2376599015fc28bd9eb24afcc0e5f6c9760b81d35cf334c3f5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page