Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Django 1.5 - Erste Schritte und neue Features

Django 1.5 - Erste Schritte und neue Features

Django besteht im Kern aus den Komponenten Model, Template und View.

Die Models des Object-Relational-Mapper (ORM) ermöglichen einen einfachen und schnellen Zugriff auf die Datenbank. Dabei werden verschiedene Datenbanken unterstützt. Die Daten werden dann in sogenannten Views aufbereitet und mit Hilfe der Template Engine gerendert.

Diese Komponenten sowie deren Zusammenspiel mit Routing und Middleware werden in diesem Vortrag vorgestellt.

Außerdem wird auf die neuen Features in Django 1.5 eingegangen. Dazu gehört unter anderem experimentelle Unterstützung für Python 3, ein konfigurierbares Model für Benutzer, Optimierung von Datenbankoperationen, verbessertes HTTP-Streaming sowie die Unterstützung von PostGIS 2.0.

Django ist Open Source Software unter einer BSD-Lizenz.

More Decks by Markus Zapke-Gründemann

Other Decks in Programming

Transcript

  1. Übersicht 1. Vorstellung 2. Was ist Django? 3. Architektur 4.

    Komponenten 5. Code 6. Django in freier Wildbahn 7. Gute Gründe für Django 8. Django 1.5
  2. Markus Zapke-Gründemann • Softwareentwickler seit 2001 • Softwareentwicklung mit Python,

    Django und Mercurial • Selbstständig seit 2008 • Seit 2011 Geschäftsführer bei Inqbus
  3. Allgemeines • Web Application Framework • In Python geschrieben •

    Open Source Software (BSD Lizenz) • Django Software Foundation • Umfangreiche Dokumentation • Große, freundliche Community
  4. Philosophie • Rapid Development • Loose Coupling • Wiederverwendbare Applikationen

    • Don't Repeat Yourself (DRY) Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. http://c2.com/cgi/wiki?DontRepeatYourself
  5. MTV

  6. View Webserver Datenbank Template Model (ORM) URLConf Tags & Filter

    Middleware process_request process_template_response process_response process_view
  7. Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Syndication (RSS,

    Atom) Internationalisierung Lokalisierung Testing Komponenten
  8. Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Syndication (RSS,

    Atom) Internationalisierung Lokalisierung Testing Caching Komponenten
  9. Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Syndication (RSS,

    Atom) Internationalisierung Lokalisierung Testing Caching Security Komponenten
  10. Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Syndication (RSS,

    Atom) Internationalisierung Lokalisierung Testing Caching Security File Storage Komponenten
  11. Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Syndication (RSS,

    Atom) Internationalisierung Lokalisierung Testing Caching Security File Storage GeoDjango (GIS) Komponenten
  12. Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Syndication (RSS,

    Atom) Internationalisierung Lokalisierung Testing Caching Security File Storage GeoDjango (GIS) interaktive Shell Komponenten
  13. Eingebauter Entwicklungsserver $ python manage.py runserver Validating models... 0 errors

    found March 02, 2013 - 15:58:34 Django version 1.5, using settings 'mysite.settings' Development server is running at http://127.0.0.1:8000/ Quit the server with CONTROL-C. [02/Mar/2013 15:58:45] "GET /admin/ HTTP/1.1" 200 7256 [02/Mar/2013 15:58:47] "GET /admin/sites/site/ HTTP/1.1" 200 4874 [02/Mar/2013 15:58:47] "GET /admin/jsi18n/ HTTP/1.1" 200 5467 [02/Mar/2013 15:58:49] "GET /admin/ HTTP/1.1" 200 7256 [02/Mar/2013 15:58:51] "GET /admin/auth/user/ HTTP/1.1" 200 6162 [02/Mar/2013 15:58:51] "GET /admin/jsi18n/ HTTP/1.1" 200 5467
  14. from django.contrib.auth.models import User from django.db import models class Bookmark(models.Model):

    url = models.URLField() title = models.CharField(u'title', max_length=255) description = models.TextField(u'description', blank=True) is_public = models.BooleanField(u'public', default=True) owner = models.ForeignKey(User, verbose_name=u'owner') class Meta: verbose_name = u'bookmark' verbose_name_plural = u'bookmarks' def __unicode__(self): return u'%s (%s)' % (self.title, self.url) marcador/models.py
  15. from django.conf.urls import patterns, include, url urlpatterns = patterns('marcador.views', url(r'^$',

    'bookmark_list', name='marcador_bookmark_list'), ) marcador/urls.py
  16. from django.shortcuts import render from .models import Bookmark def bookmark_list(request):

    bookmarks = Bookmark.public.all() context = {'bookmarks': bookmarks} return render(request, 'marcador/bookmark_list.html', context) marcador/views.py
  17. {% extends "base.html" %} {% block content %} <h2>Latest bookmarks</h2>

    <ul> {% for bookmark in bookmarks %} <li>{% include "marcador/bookmark.html" %}</li> {% empty %} <li>No bookmarks. :(</li> {% endfor %} </ul> {% endblock %} marcador/templates/marcador/ bookmark_list.html
  18. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons
  19. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel
  20. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack
  21. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack VMWare
  22. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack VMWare Disqus
  23. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack VMWare Disqus National Geographic
  24. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack VMWare Disqus National Geographic Canonical
  25. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack VMWare Disqus National Geographic Canonical Instagram
  26. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack VMWare Disqus National Geographic Canonical Instagram The New York Times
  27. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack VMWare Disqus National Geographic Canonical Instagram The New York Times Lanyrd
  28. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack VMWare Disqus National Geographic Canonical Instagram The New York Times Lanyrd ubuntuusers.de
  29. Gute Gründe für Django 1. Full Stack Framework 2. Sichere

    Standardkonfiguration 3. Klare Strukturen & APIs
  30. Gute Gründe für Django 1. Full Stack Framework 2. Sichere

    Standardkonfiguration 3. Klare Strukturen & APIs 4. Umfangreiche Dokumentation
  31. Gute Gründe für Django 1. Full Stack Framework 2. Sichere

    Standardkonfiguration 3. Klare Strukturen & APIs 4. Umfangreiche Dokumentation 5. Wiederverwendbare Apps
  32. Gute Gründe für Django 1. Full Stack Framework 2. Sichere

    Standardkonfiguration 3. Klare Strukturen & APIs 4. Umfangreiche Dokumentation 5. Wiederverwendbare Apps 6. Stabile und regelmäßige Releases
  33. Gute Gründe für Django 1. Full Stack Framework 2. Sichere

    Standardkonfiguration 3. Klare Strukturen & APIs 4. Umfangreiche Dokumentation 5. Wiederverwendbare Apps 6. Stabile und regelmäßige Releases 7. Mehr als 4.500 weitere Django Pakete
  34. Neue Features • experimentelle Unterstützung für Python 3 • konfigurierbares

    Model für Benutzer • Speichern eines Subsets der Modelfelder
  35. Neue Features • experimentelle Unterstützung für Python 3 • konfigurierbares

    Model für Benutzer • Speichern eines Subsets der Modelfelder • Caching von „related model instances“
  36. Neue Features • experimentelle Unterstützung für Python 3 • konfigurierbares

    Model für Benutzer • Speichern eines Subsets der Modelfelder • Caching von „related model instances“ • verbessertes HTTP-Streaming
  37. Neue Features • experimentelle Unterstützung für Python 3 • konfigurierbares

    Model für Benutzer • Speichern eines Subsets der Modelfelder • Caching von „related model instances“ • verbessertes HTTP-Streaming • Unterstützung von PostGIS 2.0
  38. konfigurierbares Model für Benutzer # mysite/settings.py AUTH_USER_MODEL = 'myapp.MyUser' #

    myapp/models.py from django.db import models from contrib.auth.models import AbstractBaseUser class MyUser(AbstractBaseUser): identifier = models.CharField(max_length=40, unique=True, db_index=True) ... USERNAME_FIELD = 'identifier' ... date_of_birth = models.DateField() height = models.FloatField() ... REQUIRED_FIELDS = ['date_of_birth', 'height']
  39. Speichern eines Subsets der Modelfelder >>> product.name = 'Name changed

    again' >>> product.save() >>> product.save(update_fields=['name'])
  40. Caching von „related model instances“ >>> first_poll = Poll.objects.all()[0] >>>

    first_choice = first_poll.choice_set.all()[0] >>> first_choice.poll is first_poll # kein neuer SQL Query True