tutorial theme template superusuario password makemigrations create crear python django django-admin

python - theme - Aplicación de administración de Django o rodar la mía?



django makemigrations (7)

Me parece triste que, mientras que la aplicación de administración django ahorra mucho tiempo al principio, se convierte en una molestia más adelante, ya que su cliente exige más funciones que no se integran fácilmente con la interfaz de administración predeterminada. Puede terminar con dos tipos de herramientas de administración: el administrador de django (para aplicaciones que requieren una simple entrada de datos) y su interfaz de administración personalizada para otras aplicaciones que requieren una interfaz más completa.

Estoy comenzando a usar Django para un proyecto personal.

¿Cuáles son los pros y los contras de utilizar la aplicación de administración integrada frente a la integración de mis funciones administrativas en la propia aplicación (al marcar request.user.is_staff)?

Esta es una wiki de la comunidad porque podría considerarse una encuesta.


Usaría la aplicación de administración de Django, por varias razones. Primero, escribir una aplicación de administración puede ser bastante complicado y tomarse un tiempo si quieres hacerlo bien, y django.contrib.admin es gratis y funciona de la caja. En segundo lugar, está muy bien diseñado y es muy agradable trabajar con él (incluso para usuarios no técnicos). En tercer lugar, cubre muchos de los casos comunes y no parece prudente perder tiempo en reescribirlo hasta que esté realmente seguro de que no puede hacerlo. En cuarto lugar, no es realmente tan difícil de personalizar. Por ejemplo, agregar los botones akismet mark-as-spam y mark-as-ham fue realmente pan comido.


Es muy fácil anular selectivamente partes del administrador en diversos grados.

Usted puede:

  1. Anule las plantillas de administrador según la aplicación o incluso modelo por modelo.

  2. Anular las vistas de administrador heredando y creando subclases

  3. Acceda a las URL de administrador colocando las suyas antes en urls.py y proporcione sus propias interfaces que se basan en el aspecto y la funcionalidad del administrador.

... y mucho más.

Así que comience con el administrador y luego inserte la funcionalidad personalizada que necesite donde la necesite.

Hay un montón de aplicaciones que hacen cosas inteligentes con el administrador. Por ejemplo:

  • django-reversión se hace cargo del admin-log y lo extiende al historial completo.
  • Tusk CMS combina la aplicación django-mptt con el widget ordenable anidado JQuery de una manera ordenada.

También busque django-snippets para los fragmentos relacionados con el administrador y esta página tiene una gran cantidad de información.


Realmente depende del proyecto, supongo. Si bien puedes hacer todo en el administrador, cuando tu aplicación se vuelve más compleja, el uso del administrador también se vuelve más complejo. Y si desea que su aplicación sea realmente fácil de administrar, quiere controlar cada pequeño detalle, lo cual no es posible con la aplicación de administración.

Supongo que deberías verlo así:

Usando django admin: ahorre tiempo escribiéndolo, pierda tiempo usándolo.
Hacer rodar a su propio administrador: pierda tiempo escribiendo, ahorre tiempo usándolo.


Recomiendo habilitar el sitio de administración en casi todos los tipos de proyectos. El costo de configurarlo es bastante bajo y le brinda un mecanismo razonablemente conveniente para inspeccionar y modificar su sitio.

Si su sitio tiene principalmente un flujo de información de una sola dirección, del webmaster a los visitantes, probablemente el sitio de administración sea todo lo que necesita.

Sin embargo, si su sitio tiene una interacción más rica entre sus usuarios, deberá compilar vistas de django que puedan habilitar esa interacción y, al mismo tiempo, limitar el acceso a lo que los usuarios realmente pueden hacer.


Considere usar el administrador de Django, pero con sus propios widgets hechos a mano para campos particulares. Puede crear partes de formulario sofisticadas y decirle al administrador que use su código para las entradas y pantallas de cualquier campo específico, o todos los campos de un tipo.

Jannis ha hecho algunas cosas interesantes, y su trabajo te muestra lo fácil que es: http://jannisleidel.com/2008/11/wysiwym-editor-widget-django-admin-interface/

Un proyecto en el que estoy trabajando recientemente incorporó un selector de tiempo que utiliza menús desplegables para las diversas partes del tiempo (h, m, s) Otro campo indicaría qué días de la semana eran recurrentes ... usaría 7 casillas de verificación para los días de la semana y almacénelo en la base de datos como dateutil.rruleset en escabeche. Luego, solo da sugerencias de administración sobre qué widgets usar para los diversos campos.

Implica definir tu clase de datos, tu propio widget que subclasifica formularios. Widget, tu propio campo que subclasifica formas. Campo y modelo. Campo también. Cada una de las tres clases es agradable, simple y limpia, y es responsable de una transición de la base de datos al Modelo, del Modelo al Widget y de vuelta a través de esos dos pasos. Es realmente una cosa de belleza.

Los campos que cree serán una de las propiedades intelectuales más reutilizables y sofisticadas que pueda acumular ... y no tiene que escribir su propio administrador desde cero.


Me gustaría ir con la funcionalidad de administración de Django, sobre escribir la tuya. Puede personalizar el administrador de Django agregando sus propias plantillas para el administrador, sus propios widgets, etc. Estoy trabajando en un proyecto con un administrador de Django muy personalizado. Si hubiéramos decidido escribirlo a mano, habría tomado 4 veces más tiempo para hacerlo. Simplemente no puedo ver un escenario donde quieras escribir el tuyo.