Pro Yearly is on sale from $80 to $50! »

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. Django 1.5 Erste Schritte und neue Features Markus Zapke-Gründemann LinuxTag

    2013
  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
  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
  4. Was ist Django?

  5. Bildquelle: http://en.wikipedia.org/wiki/File:Django_Reinhardt_%28Gottlieb_07301%29.jpg Django Reinhardt * 23.1.1910 ✝ 16.5.1953

  6. Allgemeines • Web Application Framework • In Python geschrieben •

    Open Source Software (BSD Lizenz) • Django Software Foundation • Umfangreiche Dokumentation • Große, freundliche Community
  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
  8. djangoproject.com

  9. Architektur

  10. MTV

  11. Model Daten (Object Relational Mapper) Template Präsentation (HTML) View Business

    Logic (Response)
  12. None
  13. Webserver

  14. Webserver URLConf

  15. View Webserver URLConf

  16. View Webserver URLConf Middleware

  17. View Webserver URLConf Middleware process_request

  18. View Webserver URLConf Middleware process_request process_view

  19. View Webserver URLConf Middleware process_request process_view

  20. View Webserver Model (ORM) URLConf Middleware process_request process_view

  21. View Webserver Model (ORM) URLConf Middleware process_request process_view

  22. View Webserver Datenbank Model (ORM) URLConf Middleware process_request process_view

  23. View Webserver Datenbank Model (ORM) URLConf Middleware process_request process_view

  24. View Webserver Datenbank Model (ORM) URLConf Middleware process_request process_view

  25. View Webserver Datenbank Model (ORM) URLConf Middleware process_request process_view

  26. View Webserver Datenbank Template Model (ORM) URLConf Middleware process_request process_view

  27. View Webserver Datenbank Template Model (ORM) URLConf Middleware process_request process_view

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

    Middleware process_request process_view
  29. View Webserver Datenbank Template Model (ORM) URLConf Tags & Filter

    Middleware process_request process_view
  30. View Webserver Datenbank Template Model (ORM) URLConf Tags & Filter

    Middleware process_request process_template_response process_response process_view
  31. Komponenten

  32. Komponenten

  33. Sessions Komponenten

  34. Sessions Authentifizierung Komponenten

  35. Sessions Authentifizierung Formulare Komponenten

  36. Sessions Authentifizierung Formulare Validierung Komponenten

  37. Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Komponenten

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

    Atom) Komponenten
  39. Sessions Authentifizierung Formulare Validierung Serializer (JSON, XML, YAML) Syndication (RSS,

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

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

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

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

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

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

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

    Atom) Internationalisierung Lokalisierung Testing Caching Security File Storage GeoDjango (GIS) interaktive Shell Komponenten
  47. Admin

  48. None
  49. None
  50. None
  51. None
  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
  53. Code

  54. View Webserver Template Model (ORM) URLConf

  55. views.py Webserver templates/*.html models.py urls.py

  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
  57. from django.conf.urls import patterns, include, url urlpatterns = patterns('marcador.views', url(r'^$',

    'bookmark_list', name='marcador_bookmark_list'), ) marcador/urls.py
  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
  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
  60. Django in freier Wildbahn

  61. Django in freier Wildbahn ZDF - Die letzte Spur

  62. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post
  63. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket
  64. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio
  65. Django in freier Wildbahn ZDF - Die letzte Spur Washington

    Post BitBucket Rdio Vodafone
  66. Django in freier Wildbahn ZDF - Die letzte Spur Washington

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

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

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

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

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

    Post BitBucket Rdio Vodafone Mozilla Add-Ons Discovery Channel OpenStack VMWare Disqus National Geographic
  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
  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
  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
  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
  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
  77. Gute Gründe für Django

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

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

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

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

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

    Standardkonfiguration 3. Klare Strukturen & APIs 4. Umfangreiche Dokumentation 5. Wiederverwendbare Apps
  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
  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
  85. Django 1.5

  86. Neue Features

  87. Neue Features • experimentelle Unterstützung für Python 3

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

    Model für Benutzer
  89. Neue Features • experimentelle Unterstützung für Python 3 • konfigurierbares

    Model für Benutzer • Speichern eines Subsets der Modelfelder
  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“
  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
  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
  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']
  94. Speichern eines Subsets der Modelfelder >>> product.name = 'Name changed

    again' >>> product.save() >>> product.save(update_fields=['name'])
  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
  96. Django Workshop Freitag, 24. Mai 2013 13:00 bis 17:00 Uhr

    Weimar III
  97. Fragen? www.inqbus.de www.keimlink.de @keimlink