Documentos de Académico
Documentos de Profesional
Documentos de Cultura
anterior | siguiente
Tema anterior
Captulo 5: Interactuar con
una base de datos: Modelos
Prximo tema
Captulo 7: Procesamiento de
formularios
Para cierto tipo de Sitios Web, una interfaz de administracin es una parte esencial de la infraestructura. Se trata de
una interfaz basada en web, limitada a los administradores autorizados, que permite agregar, editar y eliminar el
contenido del sitio. La interfaz que usas para escribir en tu blog, el sitio privado que los editores usan para moderar
los comentarios de los lectores, la herramienta que tus clientes utilizan para actualizar los comunicados de prensa en
la web que construiste para ellos todos son ejemplos de interfaces de administracin.
Aunque hay un problema con las interfaces de administracin: es aburrido construirlas. El desarrollo web es divertido
cuando ests desarrollando funcionalidades de lado pblico del sitio, pero construir interfaces de administracin es
siempre lo mismo. Tienes que autenticar usuarios, mostrar y manipular formularios, validar las entradas y dems. Es
aburrido y repetitivo.
Cul es la solucin de Django para estas tareas aburridas y repetitivas? Las hace todas por ti en slo un par de
lneas de cdigo, ni ms ni menos. Con Django, construir interfaces de administracin es un problema resuelto.
Este captulo trata sobre la interfaz de administracin automtica de Django. Esta caracterstica funciona leyendo los
meta-datos en tus modelos para brindar una interfaz potente y lista para produccin que los administradores del sitio
podrn usar inmediatamente. Aqu discutimos cmo activar, usar y personalizar esta utilidad.
Bsqueda rpida
Ir a
Enter search terms or a module,
class or function name.
No todos los modelos pueden (o deberan) ser editables por los usuarios administradores, por lo
que necesitas marcar los modelos que deberan tener una interfaz de administracin. Esto lo
hacemos aadiendo al modelo una clase interna Admin (junto con la clase Meta, si es que hay una).
As que, para agregar una interfaz de administracin a nuestro modelo Book del captulo anterior,
usamos:
class Book(models.Model):
title = models.CharField(maxlength=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
num_pages = models.IntegerField(blank=True, null=True)
def __str__(self):
return self.title
class Admin:
pass
La declaracin de Admin marca la clase como poseedora de una interfaz de administracin. Hay
una serie de opciones que podemos incluir bajo Admin, pero por ahora vamos a limitarnos al
comportamiento por defecto, as que escribimos pass para decirle a Python que la clase Admin est
vaca.
Si ests siguiendo este ejemplo escribiendo tu propio cdigo, probablemente sea buena idea
agregar ahora declaraciones de Admin a las clases Publisher y Author.
2. Instalar la aplicacin admin. Esto se hace agregando "django.contrib.admin" a tus INSTALLED_APPS de
tu archivo de configuracin settings.py.
3. Adems, asegurate de que las aplicaciones "django.contrib.sessions", "django.contrib.auth", y
"django.contrib.contenttypes" no estn comentadas, ya que la aplicacin admin depende de ellas.
Tambin descomenta todas las lneas de MIDDLEWARE_CLASSES configurando la tupla, y borra la
definicin de TEMPLATE_CONTEXT_PROCESSOR para permitir que tome los valores por defecto.
4. Ejecuta python manage.py syncdb. Este paso instalar las tablas de la base de datos que la interfaz
de administracin necesita.
Nota: Es probable que la primera vez que ejecutaste syncdb con "django.contrib.auth" en
INSTALLED_APPS, te preguntara algo sobre crear un superusuario. Si no lo hiciste en ese
momento, tendrs que ejecutar django/contrib/auth/bin/create_superuser.py para crear este
usuario administrador. En caso contrario no sers capaz de identificarte para entrar a la interfaz
de administracin.
5. Agrega el patrn de URL en tu urls.py. Si an ests usando el que fue creado por startproject, el
patrn de la URL de administracin ya debera estar ah, pero comentado. De cualquier forma, los
converted by W eb2PDFConvert.com
Eso es todo. Ahora ejecuta python manage.py runserver para iniciar el servidor de pruebas. Vers algo como esto:
Validating models...
0 errors found.
Django version 0.97, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Ahora puedes visitar la URL que te brinda Django (http://127.0.0.1:8000/admin/ en el ejemplo precedente),
identificarte, y jugar un poco.
converted by W eb2PDFConvert.com
Las listas de cambio son esencialmente pginas de ndices de objetos en el sistema, como se muestra en la Figura
6-3.
extra como campos de bsqueda e accesos directo a filtros predefinidos. Ms adelante hablaremos sobre esto.
Los formularios de edicin se usan para modificar objetos existente y crear nuevos (mira la Figura 6-4). Cada campo
definido en tu modelo aparece aqu, y notars que campos de tipos diferentes tienen diferentes controles. (Por
ejemplo, los campos de fecha/hora tienen controles tipo calendario, las claves forneas usan cajas de seleccin,
etc.)
converted by W eb2PDFConvert.com
Nota: El acceso a editar usuarios y permisos tambin es controlado por el sistema de permisos. Si le das a
alguien el permiso de editar usuarios, estar en condiciones de editar sus propios permisos, que probablemente
no es lo que queras!
Tambin puedes asignar usuarios a grupos. Un grupo es simplemente un conjunto de permisos a aplicar a todos los
usuarios de ese grupo. Los grupos son tiles para otorgar idnticos permisos a un gran nmero de usuarios.
esta seccin slo vamos a cubrir algunas de ellas relacionadas con nuestro modelo Libro. El Captulo 17 descubre
la personalizacin de la interfaz de administracin en detalle.
Como estamos ahora, la lista de cambio de nuestros libros slo muestra la cadena de representacin del modelo
que agregamos con el mtodo __str__
Esto funciona bien slo para algunos libros, pero si tuviramos cientos o miles de libros, se volvera tan difcil como
encontrar una aguja en un pajar. Sin embargo, fcilmente podremos agregar algunas columnas, funciones de
bsqueda y filtros y a esta interfaz. Cambia la declaracin de Admin como sigue:
class Book(models.Model):
title = models.CharField(maxlength=100)
authors = models.ManyToManyField(Author)
publisher = models.ForeignKey(Publisher)
publication_date = models.DateField()
class Admin:
list_display = (title, publisher, publication_date)
list_filter = (publisher, publication_date)
ordering = (-publication_date,)
search_fields = (title,)
Estas cuatro lneas de cdigo cambian dramticamente la interfaz de nuestra lista, como se muestra en la figura 6-8.
buscar el texto en el campo ttulo (entonces podras ingresar Django para mostrar todos los
libros con Django en el ttulo).
Usando estas opciones (y las otras descriptas en el captulo 17) puedes, con slo algunas lneas de cdigo, hacer
una interfaz de edicin de datos realmente potente y lista para produccin.
converted by W eb2PDFConvert.com
Inspeccionar modelos de datos: La primer cosa que hacemos cuando hemos definido un nuevo
modelo es llamarlo desde la interfaz de administracin e ingresar algunos datos de relleno. Esto es
usual para encontrar errores de modelado; tener una una interfaz grfica al modelo revela
problemas rpidamente.
Gestin de datos adquiridos: Hay una pequea entrada de datos asociada a un sitio como
http://chicagocrime.org, puesto que la mayora de los datos provienen de una fuente automtica.
No obstante, cuando surgen problemas con los datos automticos, es til poder entrar y editarlos
fcilmente.
Qu sigue?
Hasta ahora hemos creado algunos modelos y configurado una interfaz de primera clase para modificar datos. En el
prximo captulo, nos meteremos en el verdadero guiso del desarrollo Web: creacin y procesamiento de
formularios.
[1]
[2]
[3]
[4]
[5]
anterior | siguiente
Copyright 2006, Adrian Holovaty & Jacob Kaplan-Moss.
converted by W eb2PDFConvert.com