SlideShare uma empresa Scribd logo
1 de 27
Baixar para ler offline
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
Andi Albrecht – @andialbrecht


               Erster Python-Kontakt vor etwa 10 Jahren als
               Studentische Hilfskraft bei der DFG
               Aktuell: Anwendungsentwickler für Webapplikationen bei
               ProUnix in Bonn
               Entwicklung und Pflege mittlerer und großer Systeme
               OpenSource: 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
Ü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
Um was geht es?




Grundlegende Konfiguration   Views    Methoden des ModelAdmin     Weiterführende Themen         Vorteile & Nachteile
...                          ......
                                                                Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
Grundlegende Konfiguration
Autodiscover & Sites
       settings.py
       INSTALLED_APPS = (
         …
         ’django.contrib.admin’,
         …
       )

       urls.py
       from django.contrib import admin
       admin.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
Grundlegende Konfiguration
Autodiscover & Sites
       settings.py
       INSTALLED_APPS = (
         …
         ’django.contrib.admin’, Ñ Admin ist eine App
         …
       )

       urls.py
       from django.contrib import admin
       admin.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
Grundlegende Konfiguration
Autodiscover & Sites
       settings.py
       INSTALLED_APPS = (
         …
         ’django.contrib.admin’, Ñ Admin ist eine App
         …
       )

       urls.py
       from django.contrib import admin
       admin.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
Grundlegende Konfiguration
Autodiscover & Sites
       settings.py
       INSTALLED_APPS = (
         …
         ’django.contrib.admin’, Ñ Admin ist eine App
         …
       )

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

       urlpatterns = patterns(”,
         … Ñ URLs der Default-Admin-Site
         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
Grundlegende Konfiguration
Admin-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
Grundlegende Konfiguration
Admin-Models für Models
       myapp
       |– __init__.py
       |– views.py
       |– models.py
       |– admin.py

       from django.contrib import admin
       from 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
Grundlegende Konfiguration
Admin-Models für Models
       myapp
       |– __init__.py
       |– views.py
       |– models.py
       |– admin.py

       from django.contrib import admin
       from 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
Grundlegende Konfiguration
Berechtigungen

               Admin-Bereich baut auf Apps Ñ Models Ñ
               Berechtigungen auf
               Zugang 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 nach
               Model-Berechtigungen:
                       MyModel.can_add
                       MyModel.can_change
                       MyModel.can_delete
                       Achtung: Keine Berechtigung MyModel.can_view!




Grundlegende Konfiguration   Views    Methoden des ModelAdmin     Weiterführende Themen         Vorteile & Nachteile
...                          ......
                                                                Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
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
Views
Objektliste




Grundlegende Konfiguration   Views    Methoden des ModelAdmin     Weiterführende Themen         Vorteile & Nachteile
...                          ......
                                                                Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
Views
Objektliste




Grundlegende Konfiguration   Views    Methoden des ModelAdmin     Weiterführende Themen         Vorteile & Nachteile
...                          ......
                                                                Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
Views
Objektliste, 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
Views
Objektliste, 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
Views
Objektliste, 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
Views
Detailansicht




Grundlegende Konfiguration   Views    Methoden des ModelAdmin     Weiterführende Themen         Vorteile & Nachteile
...                          ......
                                                                Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
Views
Detailansicht, 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
Methoden des ModelAdmin
Objekte, 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
Methoden des ModelAdmin
Views, 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
Weiterführende Themen


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




Grundlegende Konfiguration   Views    Methoden des ModelAdmin     Weiterführende Themen         Vorteile & Nachteile
...                          ......
                                                                Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
Weiterführende Themen
RT(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
Weiterführende Themen
Read the Source!




Grundlegende Konfiguration   Views    Methoden des ModelAdmin     Weiterführende Themen         Vorteile & Nachteile
...                          ......
                                                                Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
Vorteile & Nachteile
               Admin-Bereich Out-of-the-box, nur wenig Konfiguration
               nötig
               Administration von Daten, Aufbau von Test-Daten
               Nebenbei Geenprüfung der Datenstrukturen für Entwickler
               Einfach konfigurierbar, in vielen Details konfigurierbar
               "dicke" Apps nutzen den Admin-Bereich (CMS, Shop)

               Admin-Bereich bildet eine technische Sicht (Datenbank)
               ab, aber keine fachliche
               Nutzer brauchen Staff-Flag
               Versuch, den Admin-Bereich Endnutzer-freundlich zu
               gestalten scheitert
               Admin-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
Danke!

                E-Mail albrecht@prounix.de
                       albrecht.andi@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

Mais conteúdo relacionado

Semelhante a Der Django-Admin-Bereich im Überblick

Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular AppFlorian Bader
 
SEO on TYPO3 homepage
SEO on TYPO3 homepageSEO on TYPO3 homepage
SEO on TYPO3 homepageAlex Kellner
 
Django - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlinesDjango - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlinesMarkus Zapke-Gründemann
 
Ansible für Entwickler: Konfigurationsmanagement nicht nur für Ops
Ansible für Entwickler: Konfigurationsmanagement nicht nur für OpsAnsible für Entwickler: Konfigurationsmanagement nicht nur für Ops
Ansible für Entwickler: Konfigurationsmanagement nicht nur für OpsQAware GmbH
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in RailsAngelo Maron
 
B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009Andreas Schulte
 
Zend Framework 2 - Best Practices
Zend Framework 2 - Best PracticesZend Framework 2 - Best Practices
Zend Framework 2 - Best PracticesRalf Eggert
 
Mini Handbuch-Joomla1.7
Mini Handbuch-Joomla1.7Mini Handbuch-Joomla1.7
Mini Handbuch-Joomla1.7schulpraxis
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGTorsten Kleiber
 
DWX 2019 Session. Machine Learning in .NET
DWX 2019 Session. Machine Learning in .NETDWX 2019 Session. Machine Learning in .NET
DWX 2019 Session. Machine Learning in .NETMykola Dobrochynskyy
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...LeanIX GmbH
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresMatthias Jauernig
 
Angular 2 Workshop November 2015 von der w-jax 2015
Angular 2 Workshop November 2015 von der w-jax 2015Angular 2 Workshop November 2015 von der w-jax 2015
Angular 2 Workshop November 2015 von der w-jax 2015Manfred Steyer
 
Angular 2 Workshop Oktober 2015
Angular 2 Workshop Oktober 2015Angular 2 Workshop Oktober 2015
Angular 2 Workshop Oktober 2015Manfred Steyer
 
YAFOWIL - Webformulare in Python ohne Kopfschmerzen
YAFOWIL - Webformulare in Python ohne KopfschmerzenYAFOWIL - Webformulare in Python ohne Kopfschmerzen
YAFOWIL - Webformulare in Python ohne KopfschmerzenJens Klein
 
120715 agile requirements_handout
120715 agile requirements_handout120715 agile requirements_handout
120715 agile requirements_handoutAndreas Birk
 
PHP-Module in statischen Seiten - Architektur-Ansätze
PHP-Module in statischen Seiten - Architektur-AnsätzePHP-Module in statischen Seiten - Architektur-Ansätze
PHP-Module in statischen Seiten - Architektur-AnsätzeRalf Lütke
 
.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScript.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScriptManfred Steyer
 

Semelhante a Der Django-Admin-Bereich im Überblick (20)

Testing einer Angular App
Testing einer Angular AppTesting einer Angular App
Testing einer Angular App
 
SEO on TYPO3 homepage
SEO on TYPO3 homepageSEO on TYPO3 homepage
SEO on TYPO3 homepage
 
Django - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlinesDjango - The Web framework for perfectionists with deadlines
Django - The Web framework for perfectionists with deadlines
 
Ansible für Entwickler: Konfigurationsmanagement nicht nur für Ops
Ansible für Entwickler: Konfigurationsmanagement nicht nur für OpsAnsible für Entwickler: Konfigurationsmanagement nicht nur für Ops
Ansible für Entwickler: Konfigurationsmanagement nicht nur für Ops
 
Domain Driven Design in Rails
Domain Driven Design in RailsDomain Driven Design in Rails
Domain Driven Design in Rails
 
Schnelleinstieg in Angular
Schnelleinstieg in AngularSchnelleinstieg in Angular
Schnelleinstieg in Angular
 
B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009B1 Acocon Lotus Day 08.09.2009
B1 Acocon Lotus Day 08.09.2009
 
Zend Framework 2 - Best Practices
Zend Framework 2 - Best PracticesZend Framework 2 - Best Practices
Zend Framework 2 - Best Practices
 
Mini Handbuch-Joomla1.7
Mini Handbuch-Joomla1.7Mini Handbuch-Joomla1.7
Mini Handbuch-Joomla1.7
 
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AGQualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
Qualitätssicherung in ADF Projekten der IKB Deutschen Industriebank AG
 
DWX 2019 Session. Machine Learning in .NET
DWX 2019 Session. Machine Learning in .NETDWX 2019 Session. Machine Learning in .NET
DWX 2019 Session. Machine Learning in .NET
 
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
CodeTalks Vortrag: Automatisierung mit Ansible & Jenkins @ LeanIX Enterprise ...
 
Einführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core MiddlewaresEinführung in ASP.NET Core Middlewares
Einführung in ASP.NET Core Middlewares
 
MVVM mit WPF
MVVM mit WPFMVVM mit WPF
MVVM mit WPF
 
Angular 2 Workshop November 2015 von der w-jax 2015
Angular 2 Workshop November 2015 von der w-jax 2015Angular 2 Workshop November 2015 von der w-jax 2015
Angular 2 Workshop November 2015 von der w-jax 2015
 
Angular 2 Workshop Oktober 2015
Angular 2 Workshop Oktober 2015Angular 2 Workshop Oktober 2015
Angular 2 Workshop Oktober 2015
 
YAFOWIL - Webformulare in Python ohne Kopfschmerzen
YAFOWIL - Webformulare in Python ohne KopfschmerzenYAFOWIL - Webformulare in Python ohne Kopfschmerzen
YAFOWIL - Webformulare in Python ohne Kopfschmerzen
 
120715 agile requirements_handout
120715 agile requirements_handout120715 agile requirements_handout
120715 agile requirements_handout
 
PHP-Module in statischen Seiten - Architektur-Ansätze
PHP-Module in statischen Seiten - Architektur-AnsätzePHP-Module in statischen Seiten - Architektur-Ansätze
PHP-Module in statischen Seiten - Architektur-Ansätze
 
.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScript.NET Summit 2016 München: Angular 2 mit TypeScript
.NET Summit 2016 München: Angular 2 mit TypeScript
 

Der Django-Admin-Bereich im Überblick

  • 1. 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
  • 2. Andi Albrecht – @andialbrecht Erster Python-Kontakt vor etwa 10 Jahren als Studentische Hilfskraft bei der DFG Aktuell: Anwendungsentwickler für Webapplikationen bei ProUnix in Bonn Entwicklung und Pflege mittlerer und großer Systeme OpenSource: 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
  • 3. Ü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
  • 4. Um was geht es? Grundlegende Konfiguration Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile ... ...... Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
  • 5. Grundlegende Konfiguration Autodiscover & Sites settings.py INSTALLED_APPS = ( … ’django.contrib.admin’, … ) urls.py from django.contrib import admin admin.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
  • 6. Grundlegende Konfiguration Autodiscover & Sites settings.py INSTALLED_APPS = ( … ’django.contrib.admin’, Ñ Admin ist eine App … ) urls.py from django.contrib import admin admin.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
  • 7. Grundlegende Konfiguration Autodiscover & Sites settings.py INSTALLED_APPS = ( … ’django.contrib.admin’, Ñ Admin ist eine App … ) urls.py from django.contrib import admin admin.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
  • 8. Grundlegende Konfiguration Autodiscover & Sites settings.py INSTALLED_APPS = ( … ’django.contrib.admin’, Ñ Admin ist eine App … ) urls.py from django.contrib import admin admin.autodiscover() Ñ sucht nach admin.py in Apps urlpatterns = patterns(”, … Ñ URLs der Default-Admin-Site 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
  • 9. Grundlegende Konfiguration Admin-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
  • 10. Grundlegende Konfiguration Admin-Models für Models myapp |– __init__.py |– views.py |– models.py |– admin.py from django.contrib import admin from 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
  • 11. Grundlegende Konfiguration Admin-Models für Models myapp |– __init__.py |– views.py |– models.py |– admin.py from django.contrib import admin from 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
  • 12. Grundlegende Konfiguration Berechtigungen Admin-Bereich baut auf Apps Ñ Models Ñ Berechtigungen auf Zugang 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 nach Model-Berechtigungen: MyModel.can_add MyModel.can_change MyModel.can_delete Achtung: Keine Berechtigung MyModel.can_view! Grundlegende Konfiguration Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile ... ...... Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
  • 13. 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
  • 14. Views Objektliste Grundlegende Konfiguration Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile ... ...... Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
  • 15. Views Objektliste Grundlegende Konfiguration Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile ... ...... Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
  • 16. Views Objektliste, 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
  • 17. Views Objektliste, 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
  • 18. Views Objektliste, 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
  • 19. Views Detailansicht Grundlegende Konfiguration Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile ... ...... Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
  • 20. Views Detailansicht, 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
  • 21. Methoden des ModelAdmin Objekte, 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
  • 22. Methoden des ModelAdmin Views, 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
  • 23. Weiterführende Themen Anpassung von Templates Anpassung des gesamten LookFeels (django-admin-tools, Grappelli) Hinzufügen eigener Views (Stichwort: ModelAdmin.get_urls()) Hinzufügen eigener Aktionen auf Objekten Hinzufügen eigener Filter Grundlegende Konfiguration Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile ... ...... Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
  • 24. Weiterführende Themen RT(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
  • 25. Weiterführende Themen Read the Source! Grundlegende Konfiguration Views Methoden des ModelAdmin Weiterführende Themen Vorteile & Nachteile ... ...... Django-Admin-Bereich / Andi Albrecht / PyCon DE 2012
  • 26. Vorteile & Nachteile Admin-Bereich Out-of-the-box, nur wenig Konfiguration nötig Administration von Daten, Aufbau von Test-Daten Nebenbei Geenprüfung der Datenstrukturen für Entwickler Einfach konfigurierbar, in vielen Details konfigurierbar "dicke" Apps nutzen den Admin-Bereich (CMS, Shop) Admin-Bereich bildet eine technische Sicht (Datenbank) ab, aber keine fachliche Nutzer brauchen Staff-Flag Versuch, den Admin-Bereich Endnutzer-freundlich zu gestalten scheitert Admin-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
  • 27. Danke! E-Mail albrecht@prounix.de albrecht.andi@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