Django Admin es la interfaz CRUD del marco web de Django . En su mayoría se genera automáticamente, pero se puede personalizar ampliamente. Sin embargo, debe tener en cuenta que está diseñado solo para usuarios de confianza y tiene sus límites. En cualquier caso, nunca debe dar acceso de administrador a usuarios que no sean de confianza .
Django Admin proporciona un alto nivel de personalización, pero tenga cuidado de no perder demasiados detalles de personalización. Si lo hace, es probable que sea hora de crear su propia interfaz personalizada sin Django Admin.
Versión | Fecha de lanzamiento |
---|---|
1.10 | 2106-08-01 |
1.9 | 2015-12-01 |
1.8 | 2015-04-01 |
1.7 | 2014-09-02 |
1.6 | 2013-11-06 |
1.5 | 2013-02-26 |
1.4 | 2012-03-23 |
1.3 | 2011-03-23 |
1.2 | 2010-05-17 |
1.1 | 2009-07-29 |
1.0 | 2008-09-03 |
Todo lo que necesita para comenzar con el administrador de Django ya está configurado en el diseño de proyecto predeterminado de Django. Esto incluye:
# settings.py
# `django.contrib.admin` and its dependancies.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
...,
]
MIDDLEWARE = [
...
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
...
]
TEMPLATES = [
{
...,
'OPTIONS': {
'context_processors': [
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
...
],
},
},
]
Tenga cuidado con urls.py
que es ligeramente diferente en Django> = 1.9 que en versiones anteriores.
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
]
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
]
La versión con include
todavía funcionará en Django 1.9 pero está obsoleta y se eliminará en el futuro.
Si aún no lo ha hecho, debe aplicar las migraciones base:
$ python manage.py migrate
Para acceder al administrador, también tienes que crear un superusuario con:
$ python manage.py createsuperuser
Una vez hecho esto, puede ejecutar su servidor:
$ python manage.py runserver
Y visite la página de administración en http://127.0.0.1:8000/admin/
Cuando creaste tus propios Modelos en una aplicación, aún deben registrarse para que estén disponibles en las páginas de administración.
Esto se hace en el submódulo de admin
. Si su aplicación se creó utilizando manage.py startapp
, ya debería admin.py
un archivo admin.py
en su módulo de aplicación. De lo contrario crearlo.
#myapp/admin.py
from django.contrib import admin
from myproject.myapp.models import MyModel
admin.site.register(MyModel)
Todas las opciones están definidas en la subclase ModelAdmin. algunas opciones:
class MyCustomAdmin(admin.ModelAdmin):
list_display = ('name','age','email') # fields to display in the listing
empty_value_display = '-empty-' # display value when empty
list_filter = ('name', 'company') # enable results filtering
list_per_page = 25 # number of items per page
ordering = ['-pub_date', 'name'] # Default results ordering
# and register it
admin.site.register(MyModel, MyCustomAdmin)
Una forma más concisa de registrar un modelo es usar el decorador admin.register
:
@admin.register(MyModel)
class MyCustomAdmin(admin.ModelAdmin)
...
from django.contrib.auth.models import User
class UserAdmin(admin.ModelAdmin):
list_display = ('email', 'first_name', 'last_name')
list_filter = ('is_staff', 'is_superuser')
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
Necesitamos cancelar el registro antes de registrar UserAdmin personalizado porque en django User Model Admin ya está registrado, por lo tanto, primero tenemos que cancelar el registro del User Model en nuestro admin.py y luego podemos registrar el User Model con un ModelAdmin personalizado.
Django Admin viene con algunos modelos registrados de forma predeterminada. Existen algunas ocasiones en las que es posible que desee eliminar un Modelo de las páginas de administración.
Esto se hace en el submódulo de admin
. Si su aplicación se creó con manage.py startapp
, el archivo admin.py
ya debería estar en su módulo de aplicación. De lo contrario crearlo.
#myapp/admin.py
from django.contrib import admin
from django.contrib.auth.models import User
admin.site.unregister(User)