Django Extensions Addon
An dieser Stelle wollen wir uns ein weiteres Helferlein installieren, die
Django-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
Aus Sicherheitsgründen wird das Paket nur für die Entwicklungs-Umgebung
installiert.
Fügen wir die Django Extensions also der requirements-dev.in
hinzu:
factory-boy
django-debug-toolbar
django-extensions
Kompilieren und Syncen…
(eventenv) pip-compile requirements-dev.in
(eventenv) pip-sync requirements.txt requirements-dev.txt
Dann müssen wir die Django Extensions auch noch in den event_manager/settings/dev.py
registrieren:
INSTALLED_APPS.extend(["debug_toolbar", "django_extensions"])
Wir können die Django-Extensions jetzt nutzen und müssen keine Migrationen durchführen. 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!
Um die Migrationsdateien auch zu entfernen, bieten sich unter Linux/Unix-Systemen folgende zwei Kommandos an:
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
python manage.py reset_db
python graph_models
Wir können unsere App sowie das ganze Projekt auch als Graph im Json-Format visualisieren:
python manage.py graph_models events --json
python manage.py -a --json
Falls wir eine Grafik unseres Projekts als png-Grafik ausgegeben haben, muss
auf dem Linux-System entweder pygraphviz
nor pydotplus
installiert
sein. Ersteres nutzt graphviz
, welches anhand sogenannter dot-Files
strukturelle Daten als Graphen oder Diagramme visualisieren kann, zum Beispiel
UML-Graphen.
Wir wollen so ein Klassendiagramm für unser Projekt als
png-Datei erstellen.
Wir fügen unter den requirements-dev.in
den folgenden Eintrag hinzu
und kompilieren uns syncen mit pip-compile
und pip-sync
wie gewohnt.
[..]
pygraphviz
(eventenv) pip-compile requirements-dev.in
(eventenv) pip-sync requirements.txt requirements-dev.txt
Nun erstellen wir den Graph unserer Projekts als UML-Klassendiagramm als
png-Datei namens event_manager.png
.
python manage.py graph_models -a -o event_manager.png
Mehr zu pygraphviz und graph_models * http://www.graphviz.org/ * https://django-extensions.readthedocs.io/en/latest/graph_models.html
python manage.py shell_plus
Erweitert die Django-Shell um das Importieren aller Models aus den Apps.
Spart Tipparbeit im Umgang mit der Shell. Mit dem --print_sql
Attribut lassen
sich auch gleich die SQL - Queries untersuchen.
python manage.py shell_plus --print_sql
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
Optional: Das Projekt in der Version v0.6 kopieren
Wie immer kann man sich den Zwischenstand klonen, falls beim Mitschreiben was schiefgegangen ist.
Version v0.6 via github clonen
git clone -b v0.6 git@github.com:realcaptainsolaris/event_project.git
und dann nicht vergessen, ein virtuelles Environment anzulegen und zu migrieren und danach noch ein paar Testdaten zu generieren:
python -m venv .envs/eventenv
pip install pip-tools
pip-sync requirements.txt requirements-dev.txt
python manage.py migrate
python manage.py createsuperuser
python manage.py create_user -n 10
python manage.py create_events --events 20 --categories 5
python manage.py runserver
Version v0.6 als zip-Datei runterladen
https://github.com/realcaptainsolaris/event_project/archive/refs/tags/v0.6.zip
Version v0.6 als tar-Datei runterladen
https://github.com/realcaptainsolaris/event_project/archive/refs/tags/v0.6.tar.gz