Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Creare l'amministrazione di un sito

Istruire Django per costruire automaticamente la sezione di amministrazione
Istruire Django per costruire automaticamente la sezione di amministrazione
Link copiato negli appunti

Django permette di costruire automaticamente l'amministrazione dell'applicazione, ovvero una applicazione che permette ad utenti autorizzati di gestire i contenuti del sito.

Perché l'interfaccia di amministrazione sia generata automaticamente, dobbiamo configurare opportunamente Django. Per questo modifichiamo il file miosito/settings.py aggiungendo django.contrib.admin alla variabile INSTALLED_APPS in modo da abilitare l'applicazione admin.

Poi applichiamo la modifica e lasciamo che Django aggiunga le tabelle per questa nuova applicazione:

python manage.py syncdb

Ora modifichiamo urls.py e togliamo il commento dalle direttive:

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    ...
    (r'^admin/(.*)', admin.site.root),
)

Avviamo il server

manage.py runserver

e, puntando il nostro browser all'indirizzo http://127.0.0.1:8000/admin/, dovremmo ottenere la pagina di autenticazione.

Figura 14. Login dell'amministrazione
Login dell'amministrazione

Accediamo utilizzando username e password del superuser creato durante la fase di installazione (oppure durante la prima sincronizzazione del database). Dovremmo vedere la pagina seguente:

Figura 15. Pannello di amministrazione
Pannello di amministrazione

Non c'è traccia della nostra applicazione nell'interfaccia di amministrazione; per fare questo dobbiamo indicare a Django quali oggetti della nostra applicazione vogliamo gestire nell'interfaccia di amministrazione.
Creaimo allora il file admin.py nella directory app/ della nostra applicazione, avente il seguente contenuto:

from miosito.app.models import Oggetto
from django.contrib import admin
	
admin.site.register(Oggetto)

Questo indica a Django che desideriamo gestire gli oggetti di tipo Oggetto mediante l'interfaccia di amministrazione e il framework automaticamente aggiunge una sezione app alla pagina principale della sezione di amministrazione. Per poter vedere il risultato dell'aggiunta del file admin.py dobbiamo riavviare il nostro server.

La sezione di amministrazione permette di aggiungere, modificare e cancellare gli oggetti della nostra applicazione.

Possiamo inoltre modificare secondo le nostre esigenze l'insieme degli attributi mostrati da Django per ogni oggetto della nostra applicazione.

Se vogliamo aggiungere l'attributo mioattributo al form di modifica di Oggetto dovremmo creare in admin.py la classe:

class OggettoAdmin(admin.ModelAdmin):
  fields=['mioattributo']

e sostituire l'istruzione admin.site.register(Oggetto) con:

admin.site.register(Oggetto, OggettoAdmin)

Possiamo inoltre gestire le relazioni tra oggetti, vediamo come. Supponiamo che Oggetto sia legato da una relazione 1-a-n con AltroOggetto, allora registrando AltroOggetto nell'interfaccia di amministrazione, mediante

admin.site.register(AltroOggetto)

viene aggiunto un nuovo oggetto nell'indice dell'interfaccia di amministrazione e nella form di aggiunta di AltroOggetto appare una select per impostare a quale istanza di Oggetto il nuovo item è associato.

Possiamo personalizzare lo stile dell'interfaccia di amministrazione, in modo, ad esempio, da renderla omogenea con lo stile dell'intera web application.

Come abbiamo imparato nel capitolo sui Template, modifichiamo miosito/settings.py ed aggiungiamo alla variabile TEMPLATE_DIRS il percorso completo alla directory contenente i Template della nostra applicazione.

Aggiungiamo ora la sottodirectory admin alla directory principale, tale directory conterrà il template utilizzato da Django per la sezione di amministrazione. Per fare una prova possiamo copiare il template di default utilizzato da Django, base_site.html, dalla directory django/contrib/admin/templates/admin alla directory che abbiamo appena creato.

Possiamo ora modificare il file admin/base_site.html e, ad esempio, sostituire "Django administration" con "MiaApp - sezione amministrazione".

Notiamo che questo template estende il template admin/base.html, quindi per modificare la struttura dell'interfaccia di amministrazione è necessario copiare tale file nella directory admin e modificare le varie sezioni.

Per default, l'indice della sezione amministrazione contiene tutte le applicazioni indicate nella variabile INSTALLED_APPS nel file settings.py; ma potremmo aver bisogno invece di mostrare solo alcune applicazioni e non tutte.

Per personalizzare l'indice della sezione amministrazione dobbiamo copiare il template admin/index.html dalla directory Django indicata precedentemente alla directory admin in cui abbiamo copiato base_site.html.

Nel template index.html è utilizzata la variabile app_list, contenente la lista delle applicazioni installate. Dobbiamo modificare il valore di questa variabile per ottenere di non visualizzare tutte le applicazioni presenti. Per visualizzare nell'indice solo l'applicazione miaapp dobbiamo eseguire

python manage.py adminindex miaapp

in modo da ottenere una porzione di template da utilizzare index.html per impostare correttamente il valore di app_list.

Ti consigliamo anche