Django Extensions Addon

An dieser Stelle wollen wir uns ein weiteres Helferlein installieren, die Djanto-Extensions. Diese reichern die Default-Subkommandos von manage.py um das eine oder andere hilfreiche Subkommando an.

Zur Doku der Extensions geht es hier: https://django-extensions.readthedocs.io/en/latest/

Django Extensions installieren

Fügen wir die Django Extensions der requirements-dev.in hinzu:

factory-boy
django-debug-toolbar
django-extensions

Kompilieren …

(eventenv)  pip-compile requirements-dev.in

Und syncen …

(eventenv)  pip-sync requirements.txt requirements-dev.txt

Dann müssen wir die Django Extensions auch noch in den event_manager/settings.py registrieren:

INSTALLED_APPS.extend(
    ["events", "user", "pages"]
)
THIRD_PARTY_DEV = ["debug_toolbar", "django_extensions"]
INSTALLED_APPS.extend(THIRD_PARTY_DEV)

Wir können die Django-Extensions jetzt nutzen. Wenn wir python manage.py ausführen, sehen wir neben den Standard-Kommandos noch einen neuen Bereich: Es würde zu weit führen, alle Kommandos in diesem Buch zu beschreiben, deshalb sei an dieser Stelle auf die Doku verwiesen.

(eventenv) python manage.py

[django_extensions]
 admin_generator
 clean_pyc
 clear_cache
 compile_pyc
 create_command
 create_jobs
 create_template_tags
 delete_squashed_migrations
 describe_form
 drop_test_database
 dumpscript
 export_emails
 find_template
 generate_password
 generate_secret_key
 graph_models
 list_model_info
 list_signals
 mail_debug
 merge_model_instances
 notes
 pipchecker
 print_settings
 print_user_for_session
 reset_db
 reset_schema
 runjob
 runjobs
 runprofileserver
 runscript
 runserver_plus
 set_default_site
 set_fake_emails
 set_fake_passwords
 shell_plus
 show_template_tags
 show_urls
 sqlcreate
 sqldiff
 sqldsn
 sync_s3
 syncdata
 unreferenced_files
 update_permissions
 validate_templates

Nützliche Kommandos

Beispielhaft seien hier mal ein paar nützliche Kommandos aufgezeigt.

show_urls

Mit python manage.py show_urls lassen sich alle verwendeten Routen im System anzeigen. Ein sehr praktisches Tool bei größeren Projekten.

python manage.py show_urls

python manage.py print_settings

Mit python manage.py print_settings lassen sich die aktuellen Settings ausdrucken.

python manage.py print_settings

python manage.py reset_db

Mit python manage.py reset_db wird die Datenbank komplett gelöscht. Alle Migrationen müssen neu ausgeführt und alle Testdaten neu eingespielt werden.

In der ersten Entwicklungsphase eines Projekts oft sehr hilfreich. Hinweis: Die Migrationsdateien werden nicht zerstört!

python manage.py reset_db

python manage.py shell_plus

Erweitert die Django-Shell um das Importieren aller Models aus den Apps. Spart Tipparbeit im Umgang mit der Shell.

python manage.py shell_plus

python manage.py validate_templates

Template-Fehler werden von Django nicht weiter angemeckert und gehen oft silent unter. validate_template schafft hier Abhilfe.

python manage.py validate_templates