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
File details
Details for the file manage_django_project-0.3.0rc0.tar.gz
.
File metadata
- Download URL: manage_django_project-0.3.0rc0.tar.gz
- Upload date:
- Size: 70.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ce7254e2d45ae99f0054acc0d32e513aebd31af0babaeec31371ec509b129f4 |
|
MD5 | a1ad09737739abd09ffceb94a0fa48f0 |
|
BLAKE2b-256 | 0d8fefcb553869e22061bfcbcb951603b58478e22cb1a29e3c9e24b65c276059 |
Provenance
File details
Details for the file manage_django_project-0.3.0rc0-py3-none-any.whl
.
File metadata
- Download URL: manage_django_project-0.3.0rc0-py3-none-any.whl
- Upload date:
- Size: 49.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f45c7d001f839bc5c54ae3c2681229b4fbb17118b1acdf1da0d97da448dab975 |
|
MD5 | 14dfcef13e4d5bfb979ede1b7f34fcae |
|
BLAKE2b-256 | b7f6fbf263e19d2bf7a8654cf1a33edb9b4406950b39e9810728d627b64ef2da |