django-adminAan de slag met django-admin


Opmerkingen

Django Admin is de CRUD-interface van het webframework van Django . Het wordt meestal automatisch gegenereerd, maar kan op grote schaal worden aangepast. U moet er echter rekening mee houden dat het alleen voor vertrouwde gebruikers is ontworpen en zijn beperkingen heeft. U mag in geen geval beheerderstoegang geven aan niet-vertrouwde gebruikers .

Django Admin biedt een hoge mate van maatwerk, maar pas op dat u niet teveel maatwerkdetails laat vallen. Als u dit doet, is het waarschijnlijk tijd om uw eigen aangepaste interface te maken zonder helemaal Django Admin.

Middelen

versies

Versie Publicatiedatum
1.10 2106/08/01
1.9 2015/12/01
1.8 2015/04/01
1.7 2014/09/02
1.6 2013/11/06
1.5 2013/02/26
1.4 2012-03-23
1.3 2011-03-23
1.2 2010-05-17
1.1 2009-07-29
1.0 2008-09-03

Django Admin instellen

Alles wat je nodig hebt om aan de slag te gaan met Django admin is al ingesteld in de standaard projectlay-out van Django. Dit bevat:

# settings.py

# `django.contrib.admin` and its dependancies.
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    ...,
]

MIDDLEWARE = [
    ...
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    ...
]

TEMPLATES = [
    {
        ...,
        'OPTIONS': {
            'context_processors': [
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                ...
            ],
        },
    },
]
 

Wees voorzichtig met urls.py die iets anders is in Django> = 1.9 dan in oudere versies.

1.9
from django.conf.urls import url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
]
 
1.9
from django.conf.urls import url, include
from django.contrib import admin

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

Versie met include werkt nog steeds in Django 1.9, maar is verouderd en wordt in de toekomst verwijderd.

Als dit nog niet is gebeurd, moet u de basismigraties toepassen:

$ python manage.py migrate
 

Om toegang te krijgen tot de admin, moet u ook een superuser maken met:

$ python manage.py createsuperuser
 

Zodra dit is gebeurd, kunt u uw server uitvoeren:

$ python manage.py runserver
 

En bezoek de admin-pagina op http://127.0.0.1:8000/admin/

Voeg een model toe aan beheerderspagina's

Wanneer u uw eigen modellen in een app hebt gemaakt, moeten deze nog worden geregistreerd om op de beheerpagina's beschikbaar te komen.

Dit gebeurt in de admin submodule. Als uw app is gemaakt met behulp van manage.py startapp , zou er al een admin.py bestand in uw app-module moeten liggen. Anders maakt u het.

#myapp/admin.py
from django.contrib import admin
from myproject.myapp.models import MyModel

admin.site.register(MyModel)
 

Alle opties worden gedefinieerd in de subklasse ModelAdmin. enkele opties:

class MyCustomAdmin(admin.ModelAdmin):
    list_display = ('name','age','email')  # fields to display in the listing
    empty_value_display = '-empty-'        # display value when empty 
    list_filter = ('name', 'company')      # enable results filtering
    list_per_page = 25                     # number of items per page 
    ordering = ['-pub_date', 'name']       # Default results ordering

# and register it 
admin.site.register(MyModel, MyCustomAdmin)
 

Een meer beknopte manier om een model te registreren, is door de decorator admin.register te gebruiken:

@admin.register(MyModel)
class MyCustomAdmin(admin.ModelAdmin)
    ...
 

Pas het django-gebruikersbeheermodel aan

from django.contrib.auth.models import User    
class UserAdmin(admin.ModelAdmin):
    list_display = ('email', 'first_name', 'last_name')
    list_filter = ('is_staff', 'is_superuser')
    
admin.site.unregister(User) 
admin.site.register(User, UserAdmin)
 

We moeten de registratie ongedaan maken voordat we aangepaste UserAdmin registreren, omdat in django User Model Admin al is geregistreerd, dus we moeten eerst User Model in onze admin.py registreren, dan kunnen we User Model registreren met aangepaste ModelAdmin

Verwijder een model van beheerderspagina's

Django Admin wordt standaard geleverd met enkele modellen die zijn geregistreerd. In sommige gevallen wilt u misschien een model van de beheerpagina's verwijderen.

Dit gebeurt in de admin submodule. Als uw app is gemaakt met behulp van manage.py startapp , zou het admin.py bestand al in uw app-module moeten liggen. Anders maakt u het.

#myapp/admin.py
from django.contrib import admin
from django.contrib.auth.models import User

admin.site.unregister(User)