Outil de gestion d'administration Django


Django fournit des outils de gestion basés sur le Web.

L'outil de gestion automatique Django fait partie de django.contrib. Vous pouvez le voir dans INSTALLED_APPS dans le settings.py du projet :

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)

django.contrib est un énorme ensemble de fonctionnalités qui fait partie de la base de code de Django.


Outil de gestion des activations

Habituellement, nous le définirons automatiquement dans urls.py lorsque nous générons le projet, il nous suffit de supprimer le commentaire.

Les éléments de configuration sont les suivants :

from django.contrib import admin
admin.autodiscover()

# And include this URLpattern...
urlpatterns = patterns('',
    # ...
    (r'^admin/', include(admin.site.urls)),
    # ...
)

Lorsque tout cela est configuré, l'outil de gestion Django peut être exécuté.


Utilisez l'outil de gestion

pour démarrer le serveur de développement, puis visitez : http://votresite:8000/admin/ dans le navigateur, et obtenez l'interface suivante :

1029.png

Vous pouvez créer un super utilisateur via la commande python manage.py createsuperuser, comme indiqué ci-dessous :


# python manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: admin@w3cschool.cc
Password:
Password (again):
Superuser created successfully.
[root@solar HelloWorld]#

Ensuite entrez le nom d'utilisateur et le mot de passe pour vous connecter. L'interface est la suivante :

admin2.jpg

Pour que l'interface d'administration puisse gérer un certain modèle de données, nous devons d'abord enregistrer le modèle de données auprès de l'administrateur. Par exemple, nous avons précédemment créé le modèle Test dans TestModel. Modifier TestModel/admin.py :

from django.contrib import admin
from TestModel.models import Test

# Register your models here.
admin.site.register(Test)

Après l'actualisation, vous pouvez voir le tableau de données Testmodel :

admin3.jpg

Modèle complexe

La page de gestion dispose de puissants fonctions. Entièrement capable de gérer des modèles de données plus complexes.

Ajoutez d'abord un modèle de données plus complexe à TestModel/models.py :

from django.db import models

# Create your models here.
class Contact(models.Model):
    name   = models.CharField(max_length=200)
    age    = models.IntegerField(default=0)
    email  = models.EmailField()
    def __unicode__(self):
        return self.name

class Tag(models.Model):
    contact = models.ForeignKey(Contact)
    name    = models.CharField(max_length=50)
    def __unicode__(self):
        return self.name

Il y a deux tableaux ici. Tag utilise Contact comme clé externe. Un contact peut correspondre à plusieurs tags.

Nous pouvons également voir de nombreux types d'attributs que nous n'avons jamais vus auparavant, tels que IntegerField pour stocker des entiers.

admin4.png

Enregistrez plusieurs modèles dans TestModel/admin.py et affichez :

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
admin.site.register([Test, Contact, Tag])

Actualisez la page de gestion, les résultats s'affichent comme suit :

admin5.jpg

Dans les outils de gestion ci-dessus Nous pouvons effectuer des opérations de modèle complexes.


Formulaire personnalisé

Nous pouvons personnaliser la page de gestion pour remplacer la page par défaut. Par exemple, la page « ajouter » ci-dessus. Nous souhaitons afficher uniquement les parties nom et e-mail. Modifiez TestModel/admin.py :

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class ContactAdmin(admin.ModelAdmin):
    fields = ('name', 'email')

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test, Tag])

Le code ci-dessus définit une classe ContactAdmin pour décrire le format d'affichage de la page de gestion. L'attribut field à l'intérieur de

définit les champs à afficher.

Étant donné que cette classe correspond au modèle de données Contact, nous devons les enregistrer ensemble lors de l'inscription. L'effet d'affichage est le suivant :

admin6.jpg

Nous pouvons également diviser le champ de saisie en blocs, et chaque champ peut également définir son propre format. Modifiez TestModel/admin.py en :

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class ContactAdmin(admin.ModelAdmin):
    fieldsets = (
        ['Main',{
            'fields':('name','email'),
        }],
        ['Advance',{
            'classes': ('collapse',), # CSS
            'fields': ('age',),
        }]
    )

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test, Tag])

La colonne ci-dessus est divisée en deux parties : Main et Advance. les classes décrivent le format CSS de la section dans laquelle elles apparaissent. Laissez la partie Advance être masquée ici :

admin7.jpg

Il y a un bouton Afficher à côté de la partie Advance pour l'expansion. Après l'expansion, vous pouvez cliquer sur Masquer pour la masquer, comme indiqué dans la figure ci-dessous : <🎜. >

admin8.jpg
Affichage en ligne

Le contact ci-dessus est la clé externe de Tag, il existe donc une relation de référence externe.

Dans l'affichage de la page par défaut, les deux sont séparés et la relation de subordination entre les deux ne peut pas être reflétée. Nous pouvons utiliser l'affichage en ligne pour attacher la balise à la page d'édition du contact.

Modifier TestModel/admin.py :

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class TagInline(admin.TabularInline):
    model = Tag

class ContactAdmin(admin.ModelAdmin):
    inlines = [TagInline]  # Inline
    fieldsets = (
        ['Main',{
            'fields':('name','email'),
        }],
        ['Advance',{
            'classes': ('collapse',),
            'fields': ('age',),
        }]

    )

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test])

L'effet d'affichage est le suivant :

admin9.jpg
Affichage de la page de liste

Entrée le numéro dans Contact Après l'enregistrement, la page Liste de contacts se présente comme suit :

admin10.jpgNous pouvons également personnaliser l'affichage de cette page, comme afficher plus de colonnes dans la liste, ajoutez simplement l'attribut list_display dans ContactAdmin :

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class ContactAdmin(admin.ModelAdmin):
    list_display = ('name','age', 'email') # list

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test, Tag])

L'actualisation de la page affiche l'effet suivant :

admin11.jpgLa fonction de recherche est très utile lors de la gestion d'un grand nombre d'enregistrements. Nous pouvons utiliser search_fields pour ajouter une barre de recherche à. la page de liste :

from django.contrib import admin
from TestModel.models import Test,Contact,Tag

# Register your models here.
class ContactAdmin(admin.ModelAdmin):
    list_display = ('name','age', 'email') 
    search_fields = ('name',)

admin.site.register(Contact, ContactAdmin)
admin.site.register([Test])

Dans cet exemple, nous avons recherché des enregistrements portant le nom w3cschool.cc (nom de domaine de ce site Web), et les résultats sont les suivants :

admin12.jpgDjango L'outil de gestion administrative possède également de nombreuses fonctions pratiques, les étudiants intéressés peuvent l'étudier en profondeur.