Latest web development tutorials

Outils de gestion Django admin

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

Django outils de gestion automatisée font partie de django.contrib. Vous pouvez le voir dans settings.py dans les articles INSTALLED_APPS:

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 Django base de code.


Activation Management Tool

En général, nous mettons en place dans urls.py automatiquement au moment où vous générez le projet, nous avons seulement besoin de supprimer les commentaires.

Les éléments de configuration sont les suivantes:

from django.contrib import admin
admin.autodiscover()

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

Quand tout configuré, des outils de gestion de Django peuvent être exécutés.


Utilisation des outils de gestion

Démarrez le serveur de développement, puis accéder au navigateur: http: // yoursite: 8000 / admin /, pour obtenir l'écran suivant:

Vous pouvez commander python manage.py createsuperuser pour créer un super - utilisateur, comme suit:

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

Après avoir saisi un nom d'utilisateur et mot de passe, l'interface est la suivante:

Pour rendre l'interface d'administration pour la gestion d'un modèle de données, nous avons besoin d'enregistrer le modèle de données à l'admin. Par exemple, nous avons été créés avant le modèle TestModel Test. Modifier TestModel / admin.py:

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

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

Vous pouvez voir la fiche de données de rafraîchissement Testmodel:


des modèles complexes

pages d'administration puissants, entièrement capables de traiter des modèles de données plus complexes.

Une première augmentation de la plus complexe des modèles de données TestModel / models.py dans:

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 tables. Contact Tag à une clé externe. Le contact peut correspondre à une pluralité de Tag.

Nous pouvons également voir de nombreux type d'attribut ne voit pas avant, comme IntegerField stocker un nombre entier.

Dans TestModel / admin.py enregistrer plusieurs modèles et show:

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

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

page d'administration Refresh, montrent les résultats suivants:

Dans les outils de gestion ci-dessus, nous pouvons modéliser des opérations complexes.


formulaire personnalisé

Nous pouvons personnaliser les pages d'administration, au lieu de la page par défaut. Par exemple, ci-dessus "ajouter" page. Nous voulons montrer que le nom et la section e-mail. Modifier 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])

ContactAdmin code ci-dessus définit une classe pour illustrer la page de gestion de format d'affichage.

A l'intérieur des champs propriété définit les champs à afficher.

En tant que tel le modèle de données correspond Contactez notre signe quand ils doivent être enregistrés ensemble. Afficher comme suit:

Nous pouvons également bloquer les champs d'entrée, chaque champ peut également définir votre propre format. Modifier TestModel / admin.py comme suit:

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 section ci-dessus est divisé en deux parties, Main et Advance. les classes décrites dans la section de format CSS. Ici, laissez Advance partiellement caché:

Advance section suivante présente un bouton Afficher pour l'expansion, élargi cliquez Masquer pour masquer, comme indiqué ci-dessous:


Inline affichage (en-ligne)

Contact Tag est au-dessus des touches externes, donc il y a une relation de référence externe.

Dans l'affichage de la page par défaut, les deux séparés, incapable de refléter la relation de subordination. Nous pouvons utiliser l'affichage en ligne, de sorte Tag attaché à la page Contact d'édition est affiché.

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])

Afficher comme suit:


Affiche une liste de page

Entrez le numéro dans les enregistrements de contact, liste de contacts page ressemble à ceci:

Nous pouvons également personnaliser l'affichage de la page, tels que l'affichage de plusieurs colonnes dans la liste, il suffit d'ajouter list_display propriété à ContactAdmin dans:

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])

Rafraîchir l'affichage de la page comme suit:

Les capacités de recherche lors de la gestion d'un grand nombre de documents très, nous pouvons utiliser la barre de recherche pour augmenter search_fields page pour la 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 cherchons un nom pour le w3cschool.cc (site de nom de domaine), montrent les résultats suivants:

Outils Django Administrateur Gestion Il y a beaucoup de fonctionnalités utiles, les étudiants intéressés peuvent étudier en profondeur la prochaine.