.. _introduction: Einführung ********** Was ist Django? =============== `Django `_ ist ein `Python `_-Framework, das die Erstellung von Websites mit Python erleichtert. Django kümmert sich um die schwierigen Dinge, damit Sie sich auf die Erstellung Ihrer Webanwendungen konzentrieren können. Django legt Wert auf die **Wiederverwendbarkeit von Komponenten**, auch DRY (Don't Repeat Yourself) genannt, und verfügt über gebrauchsfertige Funktionen wie ein **Anmeldesystem**, **Datenbankverbindungen** und **CRUD-Operationen** (Create Read Update Delete). Eine umfangreiche und bemerkenswert ausführliche Dokumentation findet sicht unter ``_. Um die Weiterentwicklung von Django kümmtert sich die `Django Software Foundation `_ Loose Coupling ============== **Loose Coupling**, Ein grundlegendes Ziel des Django-Stacks ist die lose Kopplung und der enge Zusammenhalt. Die verschiedenen Schichten des Frameworks sollten nur dann voneinander "wissen", wenn es absolut notwendig ist. .. image:: /images/loose_coupeling.jpg Design Philosophies ==================== ``_ Model-Template-View =================== Django ist nach dem **Model-Template-View (MTV)** Muster aufgebaut. **MTV** orientiert sich am bekannten `Model-View-Controller Muster `_ (MVC). Der in Django enthaltene **Object Relational Mapper** (ORM) überträgt die Models in Datenbankstrukturen und führt alle Operationen in der Datenbank durch. Es können alle gängigen Datenbanken benutzt werden. Alle Models werden in Python geschrieben. Die **Template-Engine** unterstützt die Vererbung von Templates und bietet umfangreiche Filter und Templates. Diese können auch selbst erweitert werden. Der **View** holt die Daten, zum Beispiel mit Hilfe des **Object Relational Mappers**. Es können aber auch anderen Datenquellen genutzt werden. Die **URLConf** steuert das Routing. Mit Hilfe von regulären Ausdrücken wird der Request dem richtigen View zugewiesen. .. image:: /images/request-response.png