django: schnell performante web-applikationen entwicklen

Post on 20-Apr-2015

113 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Django ist ein in Python geschriebenes Framework, dass die schnelle Entwicklung von Web-Applikationen ermöglicht. Dabei wird Wert auf sauberen Code und die Wiederverwendbarkeit von einzelnen Komponenten gelegt.Die Kernkomponenten des Frameworks sind der Object-Relational-Mapper (ORM), die Views und die Template Engine. Alle diese Komponenten sowie deren Zusammenspiel mit dem Routing und der Middleware werden in diesem Vortrag vorgestellt.Der Object-Relational-Mapper (ORM) ermöglicht einen einfachen und schnellen Zugriff auf die Datenbank. Dabei werden verschiedene Datenbanken unterstützt.Das automatisch erzeugte Admin-Interface hilft bei der Erstellung und Bearbeitung der Daten.Die Daten werden dann in sogenannten Views aufbereitet und mit Hilfe der Template Engine gerändert. Zur Verarbeitung von Formularen stehen mächtige Formular- und Validations-Werkzeuge zur Verfügung.Alle URLs können leicht an die Bedürfnisse des jeweiligen Projekts angepasst werden. Das gleiche gilt auch für die Templates.Django macht auch das Testen der eignen Applikationen einfach. Dieser Vortrag wird dies ebenfalls darstellen.Auf der Django-Website steht eine umfangreiche englische Dokumentation zur Verfügung.Django wird als Open Source Software unter einer BSD-Lizenz verteilt.

TRANSCRIPT

Schnell performanteWeb-Applikationen entwickeln

Markus Zapke-GründemannLinuxTag 2012

Übersicht• Vorstellung

• Was ist Django?

• Architektur

• Code

• Django Roadmap

• Entwicklungsprozess

• Django in Zahlen

• Django in freier Wildbahn

• Nützliche Django Apps

MarkusZapke-Gründemann

• Softwareentwickler seit 2001

• Softwareentwicklung mit Python, Django und Mercurial

• Selbstständig seit 2008

• Seit 2011 Geschäftsführer bei Inqbus

Was ist Django?

Bildquelle: http://en.wikipedia.org/wiki/File:Django_Reinhardt_%28Gottlieb_07301%29.jpg

Django Reinhardt* 23.1.1910✝ 16.5.1953

Was ist Django?

• Web Application Framework

• In Python geschrieben

• Open Source Software (BSD Lizenz)

• Django Software Foundation

• Umfangreiche Dokumentation

• Große, freundliche Community

Was ist Django?

• 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

www.djangoproject.com

Und natürlich Ponies!

Ponies?

Ponies?

Architektur

MTV

Webserver

Webserver

Webserver

URLConf

Webserver

URLConf Middleware

Webserver

URLConf Middleware

View

Webserver

URLConf Middleware

View

Webserver

URLConf Middleware

View

Webserver

Model (ORM)

URLConf Middleware

View

Webserver

Model (ORM)

URLConf Middleware

View

Webserver

Datenbank

Model (ORM)

URLConf Middleware

View

Webserver

Datenbank

Model (ORM)

URLConf Middleware

View

Webserver

Datenbank

Model (ORM)

URLConf Middleware

View

Webserver

Datenbank

Model (ORM)

URLConf Middleware

View

Webserver

Datenbank

TemplateModel (ORM)

URLConf Middleware

View

Webserver

Datenbank

TemplateModel (ORM)

URLConf Middleware

View

Webserver

Datenbank

TemplateModel (ORM)

URLConf

Tags & Filter

Middleware

View

Webserver

Datenbank

TemplateModel (ORM)

URLConf

Tags & Filter

Middleware

View

Webserver

Datenbank

TemplateModel (ORM)

URLConf

Tags & Filter

Middleware

View

Webserver

Datenbank

TemplateModel (ORM)

URLConf

Tags & Filter

Middleware

Object Relational Mapper

Object Relational Mapper

Admin

Object Relational Mapper

Admin

URLConf

Object Relational Mapper

Admin

URLConf

Views

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Sessions

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Sessions

Serializer (JSON, XML, YAML)

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Sessions

Serializer (JSON, XML, YAML)

Syndication (RSS, Atom)

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Sessions

Serializer (JSON, XML, YAML)

Syndication (RSS, Atom)

GeoDjango (GIS)

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Sessions

Serializer (JSON, XML, YAML)

Syndication (RSS, Atom)

GeoDjango (GIS)

Formulare

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Sessions

Serializer (JSON, XML, YAML)

Syndication (RSS, Atom)

GeoDjango (GIS)

Formulare

Validation

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Sessions

Serializer (JSON, XML, YAML)

Syndication (RSS, Atom)

GeoDjango (GIS)

Formulare

Validation

File Storage

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Sessions

Serializer (JSON, XML, YAML)

Syndication (RSS, Atom)

GeoDjango (GIS)

Formulare

Validation

File Storage

Authentifizierung

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Sessions

Serializer (JSON, XML, YAML)

Syndication (RSS, Atom)

GeoDjango (GIS)

Formulare

Validation

File Storage

Authentifizierung

Testing

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Sessions

Serializer (JSON, XML, YAML)

Syndication (RSS, Atom)

GeoDjango (GIS)

Formulare

Validation

File Storage

Authentifizierung

Testing

Caching

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Sessions

Serializer (JSON, XML, YAML)

Syndication (RSS, Atom)

GeoDjango (GIS)

Formulare

Validation

File Storage

Authentifizierung

Testing

Caching

i18n & l10n

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Sessions

Serializer (JSON, XML, YAML)

Syndication (RSS, Atom)

GeoDjango (GIS)

Formulare

Validation

File Storage

Authentifizierung

Testing

Caching

i18n & l10n

Middleware

Object Relational Mapper

Admin

URLConf

Views

Templates (Tags & Filter)

Sessions

Serializer (JSON, XML, YAML)

Syndication (RSS, Atom)

GeoDjango (GIS)

Formulare

Validation

File Storage

Authentifizierung

Testing

Caching

i18n & l10n

Middleware

Security

Code

$ pip install django

$ pip install django

$ django-admin.py startproject myproject

$ pip install django

$ django-admin.py startproject myproject

$ tree myprojectmyproject!"" manage.py#"" myproject !"" __init__.py !"" settings.py !"" urls.py #"" wsgi.py

$ cd myproject$ python manage.py runserver

$ python manage.py startapp pages

$ tree.!"" manage.py!"" myproject...#"" pages !"" __init__.py !"" models.py !"" tests.py #"" views.py

$ python manage.py startapp pages

from django.db import models

class Page(models.Model): title = models.CharField(u'Titel', max_length=100) slug = models.SlugField(unique=True) body = models.TextField(u'Inhalt')

class Meta: verbose_name = u'Seite' verbose_name_plural = u'Seiten'

def __unicode__(self): return self.title

myproject/pages/models.py

from django.contrib import admin

from .models import Page

class PageAdmin(admin.ModelAdmin): prepopulated_fields = {'slug': ['title']}

admin.site.register(Page, PageAdmin)

myproject/pages/admin.py

from django.conf.urls import patterns, include, url

from django.contrib import adminadmin.autodiscover()

urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)),)

myproject/urls.py

$ python manage.py syncdb$ python manage.py runserver

http://127.0.0.1:8000/willkommen-auf-der-startseite/

from django.conf.urls import patterns, include, url

from django.contrib import adminadmin.autodiscover()

urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)), url(r'^', include('pages.urls')))

myproject/urls.py

from django.conf.urls import patterns, include, url

urlpatterns = patterns('pages.views', url(r'^(?P<slug>[-\w]+)/$', 'detail'),)

myproject/pages/urls.py

from django.shortcuts import get_object_or_404, render

from .models import Page

def detail(request, slug): page = get_object_or_404(Page, slug=slug) context = {'object': page} return render(request, 'pages/detail.html', context)

myproject/pages/views.py

<!doctype html><body> <h1>My Website</h1> {% block content %}{% endblock %}</body></html>

myproject/templates/base.html

{% extends "base.html" %}

{% block content %}<h2>{{ object.title }}</h2><p>{{ object.body|linebreaks }}</p>{% endblock %}

myproject/pages/templates/pages/detail.html

Django Roadmap

• Stabile API

• Minor Release alle neun Monate

• Klare Deprecation Timeline

• Ab Django 1.5 experimentelle Python 3.3 Unterstützung

Entwicklungsprozess

Models & Admin anlegen

Inhalte erstellen Views anlegen

Deployment

Templates anlegen

Django in Zahlen

6.000.000 Besucher der Website pro Monat

Django in Zahlen

6.000.000 Besucher der Website pro Monat

21.700 Abonnenten der django-users Mailing Liste

Django in Zahlen

6.000.000 Besucher der Website pro Monat

21.700 Abonnenten der django-users Mailing Liste

> 2.000 Packages im Python Packaging Index (> 10%)

Django in Zahlen

6.000.000 Besucher der Website pro Monat

21.700 Abonnenten der django-users Mailing Liste

> 2.000 Packages im Python Packaging Index (> 10%)

33 Kern-Entwickler

Django in Zahlen

6.000.000 Besucher der Website pro Monat

21.700 Abonnenten der django-users Mailing Liste

> 2.000 Packages im Python Packaging Index (> 10%)

33 Kern-Entwickler

> 65 Übersetzungen

Django in Zahlen

Djangoin freier Wildbahn

ZDF - Die letzte Spur

ZDF - Die letzte SpurWashington Post

ZDF - Die letzte SpurWashington Post

Rdio

ZDF - Die letzte SpurWashington Post

RdioVodafone

ZDF - Die letzte SpurWashington Post

RdioVodafone

Mozilla Add-Ons

ZDF - Die letzte SpurWashington Post

RdioVodafone

Mozilla Add-OnsDiscovery Channel

ZDF - Die letzte SpurWashington Post

RdioVodafone

Mozilla Add-OnsDiscovery Channel

VMWare

ZDF - Die letzte SpurWashington Post

RdioVodafone

Mozilla Add-OnsDiscovery Channel

VMWareDisqus

ZDF - Die letzte SpurWashington Post

RdioVodafone

Mozilla Add-OnsDiscovery Channel

VMWareDisqus

Instagram

ZDF - Die letzte SpurWashington Post

RdioVodafone

Mozilla Add-OnsDiscovery Channel

VMWareDisqus

InstagramNational Geographic

ZDF - Die letzte SpurWashington Post

RdioVodafone

Mozilla Add-OnsDiscovery Channel

VMWareDisqus

InstagramNational GeographicThe New York Times

Nützliche Django Apps

Django Debug Toolbar

http://robhudson.github.com/django-debug-toolbar/

Django Debug Toolbar

http://robhudson.github.com/django-debug-toolbar/

Django Debug Toolbar

http://robhudson.github.com/django-debug-toolbar/

Schema and Data Migrations

http://south.aeracode.org/

Celery

Distributed Task Queue

http://celeryproject.org/

Modular Search

http://haystacksearch.org/

WSGI HTTP Server for UNIX

http://gunicorn.org/

www.djangopackages.com

Fragen?

www.inqbus.de

www.keimlink.de

@keimlink

top related