.. _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