Pensamos que la interfaz de administración es la característica más atractiva de Django — y la mayoría de Djangonautas están de acuerdo — pero como no todo el mundo lo necesita, es una pieza opcional. Esto significa que hay que dar tres pasos para activar la interfaz de administración:
1. Agrega meta-datos de administración a tus modelos.
No todos los modelos pueden (o deberían) ser editables por los usuarios
administradores, por lo que necesitas "marcar" los modelos que deberían
tener una interfaz de administración. Esto lo hacemos añadiendo al
modelo una clase interna Admin
(junto con la clase Meta
, si es
que hay una). Así que, para agregar una interfaz de administración a
nuestro modelo Book
del capítulo 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 __unicode__(self):
return self.title
class Admin:
pass
La declaración de Admin
marca la clase como poseedora de una
interfaz de administración. 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á vacía.
Si estás siguiendo este ejemplo escribiendo tu propio código,
probablemente sea buena idea agregar ahora declaraciones de Admin
a
las clases Publisher
y Author
.
Instalar la aplicación
admin
. Esto se hace agregando"django.contrib.admin"
a tusINSTALLED_APPS
de tu archivo de configuraciónsettings.py
.Además, asegurate de que las aplicaciones
"django.contrib.sessions"
,"django.contrib.auth"
, y"django.contrib.contenttypes"
no están comentadas, ya que la aplicaciónadmin
depende de ellas. También descomenta todas las líneas deMIDDLEWARE_CLASSES
configurando la tupla, y borra la definición deTEMPLATE_CONTEXT_PROCESSOR
para permitir que tome los valores por defecto.Ejecuta
python manage.py syncdb
. Este paso instalará las tablas de la base de datos que la interfaz de administración 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,
tendrás que ejecutar python manage.py createsuperuser
para crear este usuario administrador. En caso contrario no serás
capaz de identificarte para entrar a la interfaz de administración.
- Agrega el patrón de URL en tu
urls.py
. Si aún estás usando el que fue creado porstartproject
, el patrón de la URL de administración ya debería estar ahí, pero comentado. De cualquier forma, los patrones de URL deberían terminar siendo algo así:
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^admin/', include('django.contrib.admin.urls')),
)
Eso es todo. Ahora ejecuta python manage.py runserver
para iniciar el
servidor de pruebas. Verás algo como esto::
Validating models...
0 errors found.
Django version 1.4, 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 anterior), identificarte, y
jugar un poco.