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 theexecute_django_from_command_line()
call. - In your
pyproject.toml
:- Add the
[manage_django_project]
section - Add the
__main__
-file as[project.scripts]
- Add the
- 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 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()
if __name__ == '__main__':
main()
pyproject.toml
[project.scripts]
manage_django_project_example = "manage_django_project_example.__main__:main"
[manage_django_project]
module_name="your_project_example"
# Django settings used for all commands except test/coverage/tox:
local_settings='your_project.settings.local'
# Django settings used for test/coverage/tox commands:
test_settings='your_project.settings.tests'
./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
Backwards-incompatible changes
v0.2.x -> v0.3.x
The config was moved out from __main__.py
into pyproject.toml
You must add in your pyproject.toml
the following stuff:
[manage_django_project]
module_name="your_project_example"
# Django settings used for all commands except test/coverage/tox:
local_settings='your_project.settings.local'
# Django settings used for test/coverage/tox commands:
test_settings='your_project.settings.tests'
The config
argument was remove from execute_django_from_command_line()
, so your __main__.py
must look like:
from manage_django_project.manage import execute_django_from_command_line
def main():
execute_django_from_command_line()
if __name__ == '__main__':
main()
history
- dev
- TBC
- v0.3.0 - 05.04.2023
- Refactor config: Move from
__main__.py
intopyproject.toml
see backwards-incompatible changes - Small project changes + requirements update
- Refactor config: Move from
- 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.4.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | d1e4e407265af6dfa3cbb6fe94446ef0cc4bab9c01e981b46740fcfb1a5f910b |
|
MD5 | 5bdaade696201be530ef4a6c2062208f |
|
BLAKE2b-256 | 0c8035e2aae7d46897b838870c4e8c7f1ca131253a77d185f00f84f62cc3c38d |
Hashes for manage_django_project-0.4.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8fcedc7c42baaba15f5d6750b790aa5c96217b665daa1f8b243d5fa113de6c94 |
|
MD5 | 1732d95dcc7c63b84b6df07818aeb3cd |
|
BLAKE2b-256 | 3708a777b65776be71ad42bc27ff1f7586a32e0c33d44ddeb1e9ba172abdb452 |