Latest web development tutorials

Herramientas de administración de Django admin

Django proporciona unas herramientas de gestión basadas en web.

herramientas de gestión automatizada de Django son parte de django.contrib. Se puede ver en settings.py en artículos INSTALLED_APPS:

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

django.contrib es un gran conjunto de características, que forma parte de la base de código de Django.


Activation Management Tool

Por lo general, establecimos en urls.py automáticamente a la hora de generar el proyecto, sólo tenemos que eliminar los comentarios.

Los elementos de configuración son las siguientes:

from django.contrib import admin
admin.autodiscover()

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

Cuando todo está configurado, las herramientas de administración de Django se pueden ejecutar.


Uso de las herramientas de gestión

Iniciar el servidor de desarrollo, y luego acceder al navegador: http: // yoursite: 8000 / admin /, para obtener la siguiente pantalla:

Puede ordenar createsuperuser python manage.py para crear un superusuario, de la siguiente manera:

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

Después de introducir un nombre de usuario y la contraseña de inicio de sesión, la interfaz es la siguiente:

Para hacer que la interfaz de administración para la gestión de un modelo de datos, es necesario registrar el modelo de datos a admin. Por ejemplo, hemos sido creados antes TestModel modelo de prueba. Modificar TestModel / admin.py:

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

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

Se puede ver la ficha de datos de actualización Testmodel:


Los modelos complejos

páginas de administración de gran alcance, plenamente capaces de manejar modelos de datos más complejas.

Un primer incremento en más complejo modelos de datos TestModel / models.py en:

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

Hay dos tablas. Contacto etiqueta a una clave externa. El contacto puede corresponder a una pluralidad de Tag.

También podemos ver muchos atribuyen tipo no visto antes, como IntegerField almacenar un número entero.

En TestModel / admin.py registrar varios modelos y espectáculo:

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

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

Recargar la página de administración, se muestran los siguientes resultados:

En las herramientas de gestión anteriores podemos modelar operaciones complejas.


formulario personalizado

Podemos personalizar las páginas de administración, en lugar de la página por defecto. Por ejemplo, el anterior "añadir" página. Queremos mostrar sólo el nombre y la sección de correo electrónico. Modificar 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 por encima de código define una clase para ilustrar la página de gestión del formato de visualización.

Dentro de los campos de propiedad define los campos que se mostrarán.

Como tal, el modelo de datos corresponde en contacto con nuestro signo cuando necesitan ser registrados juntos. Mostrar la siguiente manera:

También podemos bloquear los campos de entrada, cada campo también puede definir su propio formato. Modificar TestModel / admin.py de la siguiente manera:

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

En la sección anterior se divide en dos partes, la principal y Advance. clases descritas en la sección de formato CSS. A continuación, dejar que avance parcialmente oculto:

Avance siguiente sección tiene un botón Mostrar para la expansión, ampliado clic en Ocultar para ocultar, como se muestra a continuación:


Inline (en línea) de visualización

Contacto etiqueta está por encima de las teclas externas, por lo que existe una relación de referencia externa.

En la visualización de la página por defecto, ambos se separaron, incapaz de reflejar la relación de subordinación. Podemos utilizar la visualización en línea, por lo que aparece el texto adjunto a la página de contacto de edición.

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

Mostrar la siguiente manera:


Muestra una lista de la página

Introduce el número de los registros de contacto, página de la lista de contactos es el siguiente:

También podemos personalizar la visualización de la página, como por ejemplo de visualización más columnas en la lista, sólo tiene que añadir list_display característica en ContactAdmin en:

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

Actualizar la página de la siguiente manera:

Las capacidades de búsqueda en la gestión de un gran número de registros muy, podemos utilizar la barra de búsqueda para aumentar search_fields página para la lista:

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

En este ejemplo, que la búsqueda de un nombre para el w3cschool.cc (nombre de dominio del sitio), muestran los siguientes resultados:

Herramientas de administración de administración de Django Hay muchas características útiles, los estudiantes interesados ​​pueden estudiar en profundidad el siguiente.