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-toolsupdate_test_snapshot_files
- Update all snapshot files (by remove and recreate all snapshot files)
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
Release history:
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.6.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d8f05524d850069b529d840612f6689feda20305d79bdf81f964968f97ce176 |
|
MD5 | 2d602854b7f9a87838fac0026178e091 |
|
BLAKE2b-256 | f5fc80191f754bb9c5192b376411d2beebb5f44f87fe299ec21cb3c6ee54b0f3 |
Hashes for manage_django_project-0.6.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f7dfcaae3e834f53cdd1cf4dd83609466f145b5d285cdbc6057f359533a5125f |
|
MD5 | 7ab006674bdf63e0001a5ce68bc316a1 |
|
BLAKE2b-256 | 74d07046eefc1364a566208722b1a4ebe986fb3c2e1f7abba4856600b8dada64 |