La tarea de administrar un sitio web es una tarea de lo más complicada, influyendo en gran medida el desconocimiento de la tecnología usada y las carencias del administrador, el cual muchas veces no es técnico. Django posee una administración muy potente, pero para un usuario no-programador a veces puede seguir siendo una ardua tarea.


Hay técnicas que facilitan dicha labor, como poner un enlace en cada contenido que redirija a la administración, tener administraciones relacionadas etc. Pero aún así los usuarios siguen deseando poder modificar los contenidos en el mismo sitio donde están viendolo. Ellos quieren ver como queda lo que acaban de editar.

Del mismo modo pasa con las etiquetas, si nuestro sitio web está internacionalizado (o en proceso de, es una tarea que nunca termina), django no nos proporciona ninguna manera de hacerlo facilmente. Existen proyectos como rosseta, o transhette que intentan tener algo parecido a una administración para las etiquetas, pero están totalmente descontextualizadas, y si resulta dificil administrar los contenidos, las etiquetas siempre son más “graciosas”.

Nosotros planteamos la traducción y la edición “inline” de etiquetas y contenidos. Para ello hemos realizado un par de huevos en PyPI:

* django-inlinetrans, con dos años de desarrollo.
* django-inplaceedit, con casi un año de desarrollo, en esta nueva versión y tres desde la primera versión.

Video Demo (Poner en pantalla completa para ver adecuadamente)

Estos dos se basan en una serie de puntos comunes:

* Facilidad pasar de una aplicación sin traducción/edición “inline” a una con dicha funcionalidad
* No relentizar el servidor, no deben de realizar ninguna consulta ni cálculo complejo
* No ensuciar el DOM, cuando no tengas permiso de edición, y ensuciarlo lo mínimo cuando lo tengas
* Deben ser genéricos, configurables y extensibles
* Deben de funcionar, que es lo más dificil ;-)

Para pasar de una etiqueta traducible a una traducible “inline” tras instalar la aplicación (5 minutos para cualquier programador django), habrá que cambiar:

  {% trans "Hello world" %}

Por:

  {% itrans "Hello world" %}

Del mismo modo para la edición de contenidos, tras instalar la aplicación (otros 5 minutos como máximo) habrá que pasar de:

  {{ content.description|safe }}

A:

  {% inplace_edit "content.description|safe" %}

Es importante añadir que la edición “inline” no se queda exclusivamente en textos (aunque puede ser en el campo más común), además se pueden editar: choices, campos buleanos, campos fecha/fecha y hora, foreing keys, many to many, campos de archivo y de imagen. Además con la extensión django-inplaceedit-extra-fields podrás en los campos foreing keys y many to many editar inline autocompletando, gracias a django-ajax-selects. Podrás editar inline imagenes haciendoles thumbnails, gracias a sorl.thumbnail, y podrás editar textos html con el editor tinyMCE, gracias a cmsutils.

Tambien es importante aclarar que ni la edición ni la traducción inline pueden sustituir a una administración (de contenidos o etiquetas), pero si puede mejorar mucho la expersiencia del usuario.

Para saber más de otras contribuciones realizadas en pypi ver, el post PyPI y Yaco.
Para ver otra contribuciones ver la sección de contribuciones

Related Posts:


  1. Guillermo dice:

    You Should change the MEDIA_URL in your template tags to STATIC_URL and the name of your media dir in your inplaceeditform folder to static.

    Regards

  2. You actually make it seem to be not thay hard with all your demonstration even so to find this trouble to become actually an element that I find myself I’d personally never realize. It kind of feels way too complicated and also wide-ranging for me personally. We’re looking ahead to your next publish, I’m going to make an effort to purchase the their hands on them!

    • pmartin dice:

      I think that this is very very easy, like you said you can see the demo. But obviously it’s possible that you have to adapt the code, for this the app is very customizable.

      What is your problem?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>