Der Django-Admin-Bereich im Überblick

27
Der Django-Admin-Bereich im Überblick Andi Albrecht PyCon DE 2012 31. Oktober 2012 . . . Grundlegende Konfiguration . . . . . . Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

description

Vortrag auf der PyConDE 2012 am 31. Oktober 2012.

Transcript of Der Django-Admin-Bereich im Überblick

Page 1: Der Django-Admin-Bereich im Überblick

Der Django-Admin-Bereich imÜberblick

Andi Albrecht

PyCon DE 2012

31. Oktober 2012

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 2: Der Django-Admin-Bereich im Überblick

Andi Albrecht – @andialbrecht

Erster Python-Kontakt vor etwa 10 Jahren alsStudentische Hilfskraft bei der DFGAktuell: Anwendungsentwickler für Webapplikationen beiProUnix in BonnEntwicklung und Pflege mittlerer und großer SystemeOpenSource: Rietveld Code Review Tool,python-sqlparse, CrunchyFrog, hgsvn, ...

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 3: Der Django-Admin-Bereich im Überblick

Übersicht

Grundlegende Konfiguration

Views

Methoden des ModelAdmin

Weiterführende Themen

Vorteile & Nachteile

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 4: Der Django-Admin-Bereich im Überblick

Umwas geht es?

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 5: Der Django-Admin-Bereich im Überblick

Grundlegende KonfigurationAutodiscover & Sites

settings.pyINSTALLED_APPS = (…’django.contrib.admin’,…

)

urls.pyfrom django.contrib import adminadmin.autodiscover()

urlpatterns = patterns(”,…url(r’^admin/’, include(admin.site.urls)),…

)

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 6: Der Django-Admin-Bereich im Überblick

Grundlegende KonfigurationAutodiscover & Sites

settings.pyINSTALLED_APPS = (…’django.contrib.admin’, Ñ Admin ist eine App…

)

urls.pyfrom django.contrib import adminadmin.autodiscover()

urlpatterns = patterns(”,…url(r’^admin/’, include(admin.site.urls)),…

)

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 7: Der Django-Admin-Bereich im Überblick

Grundlegende KonfigurationAutodiscover & Sites

settings.pyINSTALLED_APPS = (…’django.contrib.admin’, Ñ Admin ist eine App…

)

urls.pyfrom django.contrib import adminadmin.autodiscover() Ñ sucht nach admin.py in Apps

urlpatterns = patterns(”,…url(r’^admin/’, include(admin.site.urls)),…

)

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 8: Der Django-Admin-Bereich im Überblick

Grundlegende KonfigurationAutodiscover & Sites

settings.pyINSTALLED_APPS = (…’django.contrib.admin’, Ñ Admin ist eine App…

)

urls.pyfrom django.contrib import adminadmin.autodiscover() Ñ sucht nach admin.py in Apps

urlpatterns = patterns(”,… Ñ URLs der Default-Admin-Siteurl(r’^admin/’, include(admin.site.urls)),…

)

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 9: Der Django-Admin-Bereich im Überblick

Grundlegende KonfigurationAdmin-Models für Models

myapp|– __init__.py|– views.py|– models.py|– admin.py

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 10: Der Django-Admin-Bereich im Überblick

Grundlegende KonfigurationAdmin-Models für Models

myapp|– __init__.py|– views.py|– models.py|– admin.py

from django.contrib import adminfrom library import models

class BookAdmin(admin.ModelAdmin):pass

admin.site.register(models.Book, BookAdmin)admin.site.register(models.Author, admin.ModelAdmin)admin.site.register(models.Publisher, admin.ModelAdmin)

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 11: Der Django-Admin-Bereich im Überblick

Grundlegende KonfigurationAdmin-Models für Models

myapp|– __init__.py|– views.py|– models.py|– admin.py

from django.contrib import adminfrom library import models

class BookAdmin(admin.ModelAdmin):pass

admin.site.register(models.Book, BookAdmin)admin.site.register(models.Author, admin.ModelAdmin)admin.site.register(models.Publisher, admin.ModelAdmin)

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 12: Der Django-Admin-Bereich im Überblick

Grundlegende KonfigurationBerechtigungen

Admin-Bereich baut auf Apps Ñ Models Ñ

Berechtigungen aufZugang zum Admin nur für aktive User mit is_staff-Flag(Redakteur)Superuser darf immer alles (war ja klar...)Sichtbarkeit von Models / Apps richtet sich dann nachModel-Berechtigungen:

MyModel.can_addMyModel.can_changeMyModel.can_deleteAchtung: Keine Berechtigung MyModel.can_view!

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 13: Der Django-Admin-Bereich im Überblick

ViewsÜbersicht

App-Dashboard Alle Apps mit Zugriff auf mind. 1 Modelë Model-Liste Alle Models einer App auf die ein Nutzer Zugriff hat

ë Objektliste Alle(!) Objekte zu einem Modelë Detailansicht Formular zum Bearbeiten eines Objekts

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 14: Der Django-Admin-Bereich im Überblick

ViewsObjektliste

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 15: Der Django-Admin-Bereich im Überblick

ViewsObjektliste

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 16: Der Django-Admin-Bereich im Überblick

ViewsObjektliste, Konfiguration

class AuthorAdmin(admin.ModelAdmin):list_display = (’id’, ’__unicode__’, ’num_books’)list_display_links = (’id’, ’__unicode__’)search_fields = (’first_name’, ’last_name’, ’book__title’)list_filter = (’book__publisher__name’,)

def num_books(self, obj):return obj.book_set.count()

num_books.short_description = _(u’Number of books’)

admin.site.register(models.Author, AuthorAdmin)

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 17: Der Django-Admin-Bereich im Überblick

ViewsObjektliste, Konfiguration

class AuthorAdmin(admin.ModelAdmin):list_display = (’id’, ’__unicode__’, ’num_books’)list_display_links = (’id’, ’__unicode__’)search_fields = (’first_name’, ’last_name’, ’book__title’)list_filter = (’book__publisher__name’,)

def num_books(self, obj):return obj.book_set.count() # DB-Abfrage je Objekt!

num_books.short_description = _(u’Number of books’)

admin.site.register(models.Author, AuthorAdmin)

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 18: Der Django-Admin-Bereich im Überblick

ViewsObjektliste, Konfiguration

class Author(models.Model):first_name = models.CharField(max_length=100, verbose_name=_(u’First name’))last_name = models.CharField(max_length=100, verbose_name=_(u’Last name’))

def __unicode__(self):return u’%s %s’ % (self.first_name, self.last_name)

class Meta:verbose_name = _(u’Author’)verbose_name_plural = _(u’Authors’)

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 19: Der Django-Admin-Bereich im Überblick

ViewsDetailansicht

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 20: Der Django-Admin-Bereich im Überblick

ViewsDetailansicht, Konfiguration

class BookInline(admin.TabularInline):model = models.Book

class AuthorAdmin(admin.ModelAdmin):[...]inlines = [BookInline,][...]

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 21: Der Django-Admin-Bereich im Überblick

Methoden des ModelAdminObjekte, Objektlisten

save|delete_model(self, request, obj[,form, change])get_ordering(self, request)queryset(self, request)

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 22: Der Django-Admin-Bereich im Überblick

Methoden des ModelAdminViews, Forms

get_form(self, request, obj=None, **kwargs)get_readonly_fields(self, request)get_urls(self)add|change|changelist|delete_view (self,request[, object_id, ...])

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 23: Der Django-Admin-Bereich im Überblick

Weiterführende Themen

Anpassung von TemplatesAnpassung des gesamten LookFeels (django-admin-tools,Grappelli)Hinzufügen eigener Views (Stichwort:ModelAdmin.get_urls())Hinzufügen eigener Aktionen auf ObjektenHinzufügen eigener Filter

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 24: Der Django-Admin-Bereich im Überblick

Weiterführende ThemenRT(F)D

https://docs.djangoproject.com/en/1.4/ref/contrib/admin/

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 25: Der Django-Admin-Bereich im Überblick

Weiterführende ThemenRead the Source!

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 26: Der Django-Admin-Bereich im Überblick

Vorteile & NachteileAdmin-Bereich Out-of-the-box, nur wenig KonfigurationnötigAdministration von Daten, Aufbau von Test-DatenNebenbei Geenprüfung der Datenstrukturen für EntwicklerEinfach konfigurierbar, in vielen Details konfigurierbar"dicke" Apps nutzen den Admin-Bereich (CMS, Shop)

Admin-Bereich bildet eine technische Sicht (Datenbank)ab, aber keine fachlicheNutzer brauchen Staff-FlagVersuch, den Admin-Bereich Endnutzer-freundlich zugestalten scheitertAdmin-Bereich ist für versierte Benutzer

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012

Page 27: Der Django-Admin-Bereich im Überblick

Danke!

E-Mail [email protected]@gmail.com

Twitter @andialbrecht

Homepage http://andialbrecht.de

http://www.prounix.de/unternehmen/jobs/python/

prounix.de

. . .Grundlegende Konfiguration

. . . . . .Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile

Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012