Django es el entorno de desarrollo web para perfeccionistas con límites de tiempo

Entradas sobre "pluggables":

Editar y traducir inline en Django fácilmente

Desde Yaco nos traen las aplicaciones pluggables django-inlinetrans y django-inplaceedit que permiten editar traducciones de templates y objetos de nuestros modelos desde el frontend de nuestro proyecto.

Una vez instalada en nuestro proyecto, django-inlinetrans nos permitirá realizar traducciones inline. Para ello basta con reemplazar los tags de traducción de nuestras plantillas:

{% trans "Hola" %}

por el templatetag itrans:

{% itrans "Hola" %}

De esta forma podremos editar las traducciones de nuestras plantillas directamente desde el frontend de nuestro proyecto.

Por su parte django-inplaceedit nos permitirá editar los campos de nuestros modelos reemplazando sus ocurrencias en nuestras plantillas por el tag inplace_edit. Por ejemplo:

{{ content.description|safe }}

Tendría que ser reemplazado por:

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

django-inplaceedit no sólo nos permite editar campos de texto si no que también soporta la edición de choices, campos booleanos, campos de fecha ó fecha y hora, foreingkeys, relaciones many-to-many, campos de archivo y de imagen, todo ello in-place desde el frontend de nuestro proyecto.

Ambas aplicaciones se pueden ver en acción en el siguiente vídeo:

Publicado por Antonio Melé el Miércoles 11 d Enero d 2012 | 7 comentarios | Categorías: aplicaciones, internacionalización, modelos, pluggables

Vídeo y diapositivas del taller de Introducción a Django

Ya está disponibles las diapositivas y el vídeo del taller de Introducción a Django que realizamos Antonio Melé (@zenxone) y Miguel Araujo (@maraujop) en el Betabeers de Octubre.

Aquí tenéis las diapositivas: Introducción a Django y Ecosistema de aplicaciones Django y apps pluggables.

Y aquí tenéis el vídeo:

Publicado por Antonio Melé el Jueves 20 d Octubre d 2011 | 18 comentarios | Categorías: comunidad, cursos, pluggables, tutorial

Lista de países con django-countries

Es probable que muchos de nuestros lectores se hayan visto en la necesidad de agregar a su sitio/aplicación web una lista de países con sus respectivas ciudades. ¿Esto es posible sin necesidad de emplear mucho tiempo?. La respuesta es SI, gracias a django-countries y la magia de Django es posible hacerlo en forma práctica y elegante, usando el estándar ISO 3166-1 para la representación de países.

Este artículo explicará de manera resumida como lograrlo, y ahorrar valiosas horas en el intento.

Primer paso: Debemos descargar la última versión del paquete django-countries de la URL: http://code.google.com/p/django-countries/

Segundo paso: Descomprimimos la carpeta en nuestro proyecto y agregamos la aplicación en la sección INSTALLED_APPS del archivo settings.py.

Ejemplo: Si el nombre de mi proyecto es excalibur, agregaría una entrada como la siguiente: 'excalibur.countries',

Tercer paso: Ejecutamos python manage.py syncdb para actualizar nuestra base de datos con la información de django-countries.

Cuarto paso: Verificamos vía un gestor gráfico, o bien, por línea de comandos que se hayan creado las tablas country y usstate en la base de datos.

Quinto paso: Agregamos la lógica necesaria en nuestro views.py para consultar la lista de países desde la base de datos y enviarla a través del método reder_to_response al html en la lista country_list.

country_list = Country.objects.all()
return render_to_response("html/formulario.html", { "COUNTRY_LIST" : country_list })

Luego, en nuestro archivo formulario.html agregaremos un select como se muestra a continuación:

<select name="pais">
    {% for country in COUNTRY_LIST %} 
        <option value="{{ country.iso3 }}" >{{ country.printable_name }}</option> 
    {% endfor %}
</select>

Publicado por Sergio Hernández el Martes 26 d Abril d 2011 | 7 comentarios | Categorías: pluggables

Traducciones de modelos con django-transmeta

django-transmeta es una aplicación reusable que nos permite añadir traducciones a los campos de nuestros modelos. Es muy fácil de utilizar ya que crea automáticamente un campo en la base de datos por cada atributo traducible y cada idioma de nuestro setting LANGUAGES.

Así, si tenemos un campo llamado nombre y nuestro setting LANGUAGES son inglés y español django-transmeta creará los campos nombre_es, nombre_en en la base de datos y al acceder directamente a atributo nombre obtendremos la traducción correspondiente al idioma que esté activo en la petición.

Para usar django-transmeta tenemos que añadir un atributo __metaclass__ a los modelos que tengan campos con traducciones y en la clase Meta del modelo añadiremos el atributo translate en el que tendremos que incluir la lista de campos que permiten ser traducidos. Valga como ejemplo el siguiente modelo en el que los campos con traducción serán description y body:

from transmeta import TransMeta

class Book(models.Model):
    __metaclass__ = TransMeta

    title = models.CharField(max_length=200)
    description = models.TextField()
    body = models.TextField(default='')
    price = models.FloatField()

class Meta:
    translate = ('description', 'body', )

Al añadir nuevos idiomas o marcar nuevos campos como traducibles django-transmeta se ocupa de detectar qué tablas faltan en la base de datos para crearlas. Para ello basta utilizar el siguiente comando tras haber modificado cualquier modelo:

./manage.py sync_transmeta_db

Otra ventaja es que django-transmeta muestra todos los campos de idiomas en el sitio de administración de Django de forma transparente, permitiendo editar todos los idiomas desde el Admin.

Publicado por Antonio Melé el Lunes 14 d Febrero d 2011 | 8 comentarios | Categorías: aplicaciones, internacionalización, modelos, pluggables