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.

Transcript

  1. 2.

    Ü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. 3.

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

    Allgemeines • Web Application Framework • In Python geschrieben •

    Open Source Software (BSD Lizenz) • Django Software Foundation • Umfangreiche Dokumentation • Große, freundliche Community
  4. 7.

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

    MTV

  6. 12.
  7. 13.
  8. 28.
  9. 29.
  10. 30.

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

    Middleware process_request process_template_response process_response process_view
  11. 41.

    Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Syndication (RSS,

    Atom) Internationalisierung Lokalisierung Testing Komponenten
  12. 42.

    Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Syndication (RSS,

    Atom) Internationalisierung Lokalisierung Testing Caching Komponenten
  13. 43.

    Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Syndication (RSS,

    Atom) Internationalisierung Lokalisierung Testing Caching Security Komponenten
  14. 44.

    Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Syndication (RSS,

    Atom) Internationalisierung Lokalisierung Testing Caching Security File Storage Komponenten
  15. 45.

    Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Syndication (RSS,

    Atom) Internationalisierung Lokalisierung Testing Caching Security File Storage GeoDjango (GIS) Komponenten
  16. 46.

    Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Syndication (RSS,

    Atom) Internationalisierung Lokalisierung Testing Caching Security File Storage GeoDjango (GIS) interaktive Shell Komponenten
  17. 47.
  18. 48.
  19. 49.
  20. 50.
  21. 51.
  22. 52.

    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
  23. 53.
  24. 56.

    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
  25. 57.

    from django.conf.urls import patterns, include, url urlpatterns = patterns('marcador.views', url(r'^$',

    'bookmark_list', name='marcador_bookmark_list'), ) marcador/urls.py
  26. 58.

    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
  27. 59.

    {% 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
  28. 66.

    Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons
  29. 67.

    Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel
  30. 68.

    Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack
  31. 69.

    Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack VMWare
  32. 70.

    Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack VMWare Disqus
  33. 71.

    Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack VMWare Disqus National Geographic
  34. 72.

    Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack VMWare Disqus National Geographic Canonical
  35. 73.

    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
  36. 74.

    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
  37. 75.

    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
  38. 76.

    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
  39. 80.

    Gute Gründe für Django 1. Full Stack Framework 2. Sichere

    Standardkonfiguration 3. Klare Strukturen & APIs
  40. 81.

    Gute Gründe für Django 1. Full Stack Framework 2. Sichere

    Standardkonfiguration 3. Klare Strukturen & APIs 4. Umfangreiche Dokumentation
  41. 82.

    Gute Gründe für Django 1. Full Stack Framework 2. Sichere

    Standardkonfiguration 3. Klare Strukturen & APIs 4. Umfangreiche Dokumentation 5. Wiederverwendbare Apps
  42. 83.

    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
  43. 84.

    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
  44. 89.

    Neue Features • experimentelle Unterstützung für Python 3 • konfigurierbares

    Model für Benutzer • Speichern eines Subsets der Modelfelder
  45. 90.

    Neue Features • experimentelle Unterstützung für Python 3 • konfigurierbares

    Model für Benutzer • Speichern eines Subsets der Modelfelder • Caching von „related model instances“
  46. 91.

    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
  47. 92.

    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
  48. 93.

    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']
  49. 94.

    Speichern eines Subsets der Modelfelder >>> product.name = 'Name changed

    again' >>> product.save() >>> product.save(update_fields=['name'])
  50. 95.

    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