.. _django_extensions: .. index:: single: Django Extensions single: show_urls single: reset_db single: validate_templates single: shell_plus 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: ``_ Django Extensions installieren ================================= Fügen wir die Django Extensions der ``requirements-dev.in`` hinzu: .. code-block:: shell factory-boy django-debug-toolbar django-extensions Kompilieren ... .. code-block:: shell (eventenv) pip-compile requirements-dev.in Und syncen ... .. code-block:: shell (eventenv) pip-sync requirements.txt requirements-dev.txt Dann müssen wir die Django Extensions auch noch in den ``event_manager/settings.py`` registrieren: .. code-block:: python 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. .. code-block:: shell (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. .. code-block:: shell python manage.py show_urls python manage.py print_settings ---------------------------------- Mit ``python manage.py print_settings`` lassen sich die aktuellen Settings ausdrucken. .. code-block:: shell 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! .. code-block:: shell 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. .. code-block:: 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. .. code-block:: shell python manage.py validate_templates