SlideShare une entreprise Scribd logo
1  sur  32
DJANGO
The webframework for perfectionists
with deadlines
Wie liefen die Übungen bei euch?
War doch ganz easy oder ?
Wie liefen die Übungen bei euch?
Eher doch nicht?
Wir bauen uns ein Content Management System…
Was braucht man dafür alles?
Wie lange braucht man dafür wohl?
Mit Django brauchst du dafür…
einzigen
Tag
Einen
Mit Django brauchst du dafür…
Wo ist Django entstanden?
World Online
Enge Deadlines
Ständig neue Anforderungen
Oft nur wenige Stunden
Wer verwendet Django?
App Engine
Wer verwendet Django?
Wer verwendet Django?
Wer verwendet Django?
NEBULA
Wer verwendet Django?
Was also macht Django besonders?
Django ist in Python geschrieben
Python ist elegant
Simple is better than complex.
Readability counts.
There should be one-- and preferably only one
--obvious way to do it.
Python ermöglicht sehr schnelle Entwicklung
"Python is fast enough for our site and
allows us to produce maintainable features
in record times, with a minimum of developers,"
said Cuong Do, Software Architect,YouTube.com.
Python wird von der Elite benutzt
Django folgt der MVC-Architektur
… oder so ähnlich 
View
Template
Model
Database
Django folgt der MTV-Architektur!
Django macht alle Datenbankarbeit für dich
Object Relational
Mapper (ORM)
Database
Object1
Foo{}
Object2
Foo{}
Kein SQL nötig!
Python-only development
Höhere Produktivität
Django erzeugt deinen Adminbereich automatisch
Ein komplettes Admininterface
in nur 2 Minuten!
Django-App: Simple Poll
1. Projekt anlegen
>> django-admin.py startproject mysite
2. App anlegen
>> python manage.py startapp simplepolls
Simple Poll: Datenmodell erstellen
Tatort: models.py
from django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(max_length=200)
votes = models.IntegerField()
Simple Poll: Datenbank erzeugen
>> python manage.py syncdb
Simple Polls: Template erstellen
Tatort: polls/index.html
{% if latest_poll_list %}
<ul>
{% for poll in latest_poll_list %}
<li>
<a href="/polls/{{ poll.id }}/">{{ poll.question }}</a>
</li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}
Simple Polls: View erstellen
Tatort: polls/views.py
from django.shortcuts import render_to_response
from polls.models import Poll
def index(request):
latest_poll_list = Poll.objects.all().order_by('-pub_date')[:5]
return render_to_response('polls/index.html', {'latest_poll_list': latest_poll_list})
Simple Polls: Adminbereich erstellen
settings.py
INSTALLED_APPS = (
[…]
'django.contrib.admin',
[…]
)
urls.py
Drei Zeilen einkommentieren
…
python manage.py syncdb
Done!
Was gibt es noch?
pretty url config
internationlization
caching
authentication
comments
GeoDjango
session management
syndication feeds
file handling/storage
forms logging
Und noch viel mehr…
Fragen!
Django-Links
djangoproject.com
djangobook.com
djangopackages.com
pydev.org

Contenu connexe

Similaire à Warum istdjangosocool

Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
Christian Baranowski
 
Das funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPagesDas funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPages
Christian Güdemann
 

Similaire à Warum istdjangosocool (20)

Crowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performanceCrowdcode hitchhikers guide to java performance
Crowdcode hitchhikers guide to java performance
 
Django - The Web framework for perfectionists with deadlines
Django - The Web framework  for perfectionists with deadlinesDjango - The Web framework  for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlines
 
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
Agiles Lernen und Software Entwicklung das OSGi Code Camp 2010
 
DNUG ak-anwendungsentwicklung.18042011
DNUG ak-anwendungsentwicklung.18042011DNUG ak-anwendungsentwicklung.18042011
DNUG ak-anwendungsentwicklung.18042011
 
Das funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPagesDas funktionierte doch schon einmal! - JUnit Testing in XPages
Das funktionierte doch schon einmal! - JUnit Testing in XPages
 
Microsoft und die Open Source Community - Leaving the death star behind
Microsoft und die Open Source Community - Leaving the death star behindMicrosoft und die Open Source Community - Leaving the death star behind
Microsoft und die Open Source Community - Leaving the death star behind
 
Testen mit, durch und in Scrum
Testen mit, durch und in ScrumTesten mit, durch und in Scrum
Testen mit, durch und in Scrum
 
JavaScript und trotzdem Softwerker
JavaScript und trotzdem SoftwerkerJavaScript und trotzdem Softwerker
JavaScript und trotzdem Softwerker
 
Monitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-AnwendungenMonitoring und Profiling von Java-Anwendungen
Monitoring und Profiling von Java-Anwendungen
 
Dnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbookDnug35 ak-dev.071111-cookbook
Dnug35 ak-dev.071111-cookbook
 
Technische Gründe für schlechte Entwicklungsperformance
Technische Gründe für schlechte EntwicklungsperformanceTechnische Gründe für schlechte Entwicklungsperformance
Technische Gründe für schlechte Entwicklungsperformance
 
2011 07-07 activiti
2011 07-07 activiti2011 07-07 activiti
2011 07-07 activiti
 
20101117 activiti
20101117 activiti20101117 activiti
20101117 activiti
 
Plone.app.discussion
Plone.app.discussionPlone.app.discussion
Plone.app.discussion
 
20110406 activiti mai
20110406 activiti mai20110406 activiti mai
20110406 activiti mai
 
2011 05-05 activiti
2011 05-05 activiti2011 05-05 activiti
2011 05-05 activiti
 
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
23 Dinge, die Sie über Software-Entwicklung in Teams wissen sollten.
 
objectiF extrem
objectiF extremobjectiF extrem
objectiF extrem
 
Java in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App EnginegJava in the Cloud - am Beispiel der Google App Engineg
Java in the Cloud - am Beispiel der Google App Engineg
 
Django nutshell overview
Django nutshell overviewDjango nutshell overview
Django nutshell overview
 

Warum istdjangosocool

Notes de l'éditeur

  1. Django Reinhardt, Dreifingriger Jazzmusiker der 1930er Jahre, Namenspate des Webframeworks.
  2. World Online ist ein großer Zeitungsverlag Unterhält eine Reihe von Newswebseiten Newsgeschäft ist hochdynamisch Enge Deadlines erforderten eine Technologie, die sehr schnelle Entwicklung erlaubt Die Technologie musste hochmodular sein, da die Webseiten für Testzwecke nicht offline genommen werden konnten
  3. Google ermöglicht die Nutzung seiner Infrastruktur via Google App Engine – kostenfrei! Verschiedene Serverkonfigurationen werden angeboten, auch Django Das Google App Engine Frontend basiert auf Django
  4. DISQUS ist ein weitverbreitetes Kommentarsystem Millionen Kommentare Weltweit Wird von vielen namhaften Webseiten genutzt: CNN, Time Magazine, FoxNews, IGN, engadget
  5. Schwedischer Musiksharingdienst auf P2P-Basis In Deutschland leider nicht verfügbar wegen zu hoher Forderungen der GEMA
  6. Die NASA nutzt Django für das Frontend ihres Nebula Cloud Service
  7. Auch die New York Time und die Washington Post nutzen Django für die Entwicklung ihrer Webangebote.
  8. Django ist in Python geschrieben und nutzt Python auch als Entwicklungssprache Python ist nach der britischen Comedytruppe „Monty Python“ benannt
  9. Im „Zen of Python“ sind die Designprinzipien der Sprache pseudophilosophisch festgehalten Die drei genannten Punkte stellen den Kern der Prinzipien Einfache Sprachelemente und Syntax Lesbarer Quellcode Eindeutige und offensichtliche Implementierungswege
  10. - Die Unternehmen/Institutionen, welche die talentiertesten Informatiker der Welt anheuern nutzen Python in ihren Kernanwendungen
  11. Django folgt der MVC-Architektur Nutzt aber eine eigene Nomenklatur Model == Model Template == View View == Controller
  12. Deshalb wird in Verbindung mit Django eher von der MTV-Architektur (Model – Template – View) gesprochen!
  13. ORM bildet eine Abstraktionsebene zwischen dem Pythondatenmodell und dem Datenbankdatenmodell Man kann ein Pythonobjekt an die Datenbank senden und erhält auch ein Pythonobjekt wieder zurück Der ORM übernimmt die Translation zwischen Python und Datenbank Dadurch entfällt eine gesonderte SQL-Entwicklung Die Anwendung wird sicherer, da SQL-Injection durch den ORM (Stichworte Escaping und Prepared Statements) verhindert wird Die Produktivität ist höher, da man als Entwickler sich nur mit einer Programmiersprache befassen muss und so Paradigmenwechsel vermeidet
  14. Adminbereiche programmieren ist sehr lästige Arbeit Python bietet vollautomatische Adminbereichsgenerierung anhand des Datenmodells Die Adminbereiche lassen sich natürlich noch mittels Templates und CSS verfeinern/anpassen Das Admininterface ist in weniger als 2 Minuten bereit!
  15. Ein Djangoprojekt enthält die benötigte Konfiguration für deine Website Einem Projekt lassen sich beliebige Django-Apps hinzufügen Jedes Projekt kommt mit einigen wesentlichen vorinstallierten Apps: Authentifizierungssystem Content Type Framework Sessionverwaltung Verwaltung für mehrere parallele Website auf einer Djangoinstallation Messaging Framework Verwaltung für statische Dateien
  16. Am Beginn einer jeden Django-App steht das Datenmodell Es wird im Skript models.py definiert Pythonklassen definieren Entitäten und können beliebige Attribute enthalten Jede dieser Klassen erbt von models.Model und enthält Mapperfunktionen für alle möglichen Datenbankdatentypen
  17. Das Datenbankschema erstellt Django vollautomatisch mittels dem Befehl syncdb Das Schema kann auch nachträglich noch (in gewissen Grenzen) geändert werden
  18. Django bietet eine Templateengine Sie ist für Designer konzipiert worden und beinhaltet daher nur wenige Syntaxelemente Designer können sich auf die Gestaltung konzentrieren gemäß des Prinzips „Separation of Concerns“ Templates können sich dynamisch je nach „Context“ verhalten. Der jeweilige Context wird durch die View definiert, welche das Template anspricht
  19. Die View liefert die Business Logic der Django-App Sie definiert, welche (Context) Daten angezeigt werden sollen … Aber NICHT auf welche Weise / in welcher Formatierung! Hierfür ist das jeweilige Template zuständig
  20. settings.py enthält die allgemeine Konfiguration Vor allem eine Liste der genutzten Apps urls.py dient dem Mapping von HTTP-Requests auf Funktionen in views.py Sie bildet die Djangointerpretation des Front Controllers Das Mapping ist sehr leistungsfähig, da Reguläre Ausdrücke verwendet werden Es ist darauf ausgerichtet „hübsche“ URLs volldynamisch zu erstellen. Beispiel: http://www.mysite/articles/2011/february/11/apple-sues-htc/
  21. Abseits der vorinstallierten Apps gibt es noch sehr viele weitere in Django enthaltene Apps Webforms Server Logs Internationalisierung (mehrsprachige Seiten) Dateiverwaltung / Speicherung Feederstellung (RSS/ATOM) Caching (memcache ist Standard) Geodatenanwendungen mit GeoDjango Kommentarsystem Uvm.
  22. Djangoseite (Djangosoftware, Sourcecode, Dokumentation, Tutorials, Blogs uvm.) http://www.djangoproject.com Django Book (Ausführlicher User Guide) http://www.djangobook.com Django Apps zur freien Verwendung in euren Projekten http://www.djangopackages.com Pydev – Das Plugin für Eclipse bildet eine vollständige Python IDE mit vollständiger Unterstützung für Django http://www.pydev.org Es gibt auch ein entsprechendes Plugin für Netbeans. Link habe ich gerade nicht zur Hand 