Creare un applicazione blog con django, parte 3: creare sito di amministrazione django

Ora che abbiamo definito il modello Post, creiamo un semplice sito di amministrazione per gestire i tuoi post. Django viene fornito di un'interfaccia di amministrazione integrata che è utile per la modifica dei contenuti. Il sito di amministrazione Django viene creato in modo dinamico per leggere i metadati del modello e fornire un'interfaccia pronta per la modifica dei contenuti.

L'applicazione django.contrib.admin è già inclusa nella voce INSTALLED_APPS, quindi non è necessario aggiungerla.

Creare un utente amministratore per il nostro progetto

Innanzitutto, dobbiamo creare un utente per gestire il sito di amministrazione. Dalla directory principale del progetto, esegui il seguente comando:

$ python manage.py createsuperuser

Inserire il nome utente, l'e-mail, la password desiderati e premere Invio. Vedrai il seguente output nel terminale:

Username (leave blank to use 'admin'): admin
Email address: [email protected]
Password: ********
Password (again): ********
Superuser created successfully.

Il sito di amministrazione di Django

Se il server di sviluppo non è in esecuzione, riavviarlo con il seguente comando:

$ python manage.py runserver

Visita http://127.0.0.1:8000/admin/ con il tuo browser Web. Vedrai la pagina di accesso dell'amministrazione, come mostrato nella seguente schermata:

Responsive image

Accedi con l'account creato nel passaggio precedente. Vedrai la pagina iniziale del sito di amministrazione Django, come mostrato nella seguente schermata:

Responsive image

I modelli Group e User che vedi nella schermata precedente fanno parte del framework di autenticazione di Django che si trova in django.contrib.auth. Se fai clic su Users, vedrai l'utente che hai creato in precedenza. Il modello Post dell'applicazione blog ha una relazione con questo modello utente. Tenere presente che si tratta di una relazione definita dal campo author.

Aggiungere tuoi modelli al sito di amministrazione

Aggiungiamo il nostro modelli al sito di amministrazione. Modifica il file blog/admin.py della tua applicazione blog e farlo diventare così:

# blog/admin.py

from django.contrib import admin
from .models import Post

admin.site.register(Post)

Ricarica il sito di amministrazione nel tuo browser. Dovresti vedere il tuo modello Post sul sito di amministrazione come segue:

Responsive image

Fai clic sul link Add accanto a Posts per aggiungere un nuovo post. Noterai il modulo che Django ha generato dinamicamente per il tuo modello, il sito di amministrazione ti consente di elencare, modificare, creare ed eliminare oggetti in modo semplice.

Django utilizza i widget diversi per ogni tipo di campo. Anche i campi complessi come DateTimeField vengono visualizzati con un'interfaccia semplice, ad esempio un selettore di data JavaScript.

Compila il modulo e fai clic sul pulsante SAVE. Dovresti essere reindirizzato alla pagina di elenco dei post con un messaggio di successo e il post che hai appena creato come mostrato nella seguente schermata:

Responsive image

Nota: E' necessario compilare manualmente il campo slug, ad es. Questo-è-il-mio-titolo. Non ti preoccupare, c'è un modo automatico per farlo, cioè personalizzando il sito di amministrazione.

Personalizzare il modo di visualizzazione dei modelli

Ora diamo un'occhiata a come personalizzare il sito di amministrazione. Modifica il file blog/admin.py e farlo diventare così:

# blog/admin.py

from django.contrib import admin
from .models import Post

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
   list_display = ('title', 'slug', 'author', 'publish',
                   'status')

Qui stiamo dicendo al sito di amministrazione Django che il nostro modello è registrato nel sito di amministrazione utilizzando una classe personalizzata che erede da ModelAdmin. In questa classe possiamo aggiungere informazioni su come visualizzare il modello nel sito di amministrazione e su come interagire con esso. Il parametro list_display consente di impostare i campi del modello che si desidera visualizzare nella pagina di elenco degli oggetti. Il decoratore @admin.register() svolge la stessa funzione della funzione admin.site.register() che abbiamo sostituito registrando la classe ModelAdmin che esso decora.

Personalizziamo il modello di amministrazione con alcune altre opzioni, utilizzando il seguente codice:

@admin.register(Post)
class PostAdmin(admin.ModelAdmin):
   list_display = ('title', 'slug', 'author', 'publish',
                      'status')
   list_filter = ('status', 'created', 'publish', 'author')
   search_fields = ('title', 'body')
   prepopulated_fields = {'slug': ('title',)}
   raw_id_fields = ('author',)
   date_hierarchy = 'publish'
   ordering = ('status', 'publish')

Puoi vedere che i campi visualizzati nella pagina di elenco dei post sono quelli che hai specificato nel parametro list_display. La pagina di elenco ora include una barra laterale a destra che consente di filtrare i risultati in base ai campi inclusi nel parametro list_filter. Un campo di ricerca è apparso sulla pagina. Questo perché abbiamo definito un elenco di campi ricercabili utilizzando il parametro search_fields. Appena sotto il campo di ricerca, ci sono collegamenti di navigazione per navigare attraverso una gerarchia di data: questo è stato definito da parametro date_hierarchy. Puoi anche vedere che i post sono ordinati in base alle colonne Status e Publish in default. Abbiamo specificato l'ordine predefinito utilizzando il parametro ordering.

Ora fai clic sul link Add Post. Noterai anche alcune modifiche qui. Mentre digiti il titolo di un nuovo post, il campo slug viene compilato automaticamente. Abbiamo detto a Django di auto-compilare il campo slug con l'input del campo title utilizzando il parametro prepopulated_fields. Inoltre, il campo author viene visualizzato con un widget di ricerca che può ridimensionare meglio di un input a discesa quando hai migliaia di utenti. Esistono molti modi per personalizzare ed estendere il sito di amministrazione di Django. Puoi trovare ulteriori informazioni qui .

Per ora è tutto. Il prossimo tutorial è imparare come lavorare con Django QuerySet e manager.


Se ti piace il mio contenuto, supportami! grazie.

Post correlati