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

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 Compártelo: Facebook: Twitter: | Categorías: pluggables

Entradas similares

oEmbed y Django: incrusta contenidos de servicios web con django-oembed

oEmbed es un formato que permite usar una representación embebida de una URL en sitios web de terceros. La API de oEmbed permite a ...


Traduce tus proyectos Django con Rosetta

django-rosetta es una aplicación que facilita enormemente el proceso de traducción de tus proyectos y aplicaciones que utilizan internacionalización. La aplicación ofrece un interfaz ...


 
Crear una imagen de nuestros modelos con django-command-extensions

Algo interesante que nos aporta django-command-extensions es poder crear una representación gráfica de nuestros modelos (o por decirlo de otro modo nuestro esquema de ...


Ejecutar tareas automáticas con django-chronograph

Django-chronograph es una aplicación que permite programar la ejecución de tareas automáticas de manage.py utilizando cron. Permite especificar las tareas a realizar y ...


 
 

6 comentarios:

El Martes 26 de Abril de 2011 Roberto Montoya dijo:
Excelente articulo! muy util. Hay alguna forma de hacer lo mismo con provincias?
El Miércoles 27 de Abril de 2011 Antonio Melé dijo:
@Roberto, para provincias puedes utilizar django.contrib.localflavor que tiene campos de formulario específicos para provincias de distintos países.
El Jueves 2 de Junio de 2011 monk dijo:
Hola, gracias por el articulo. Pero parace que con django 1.3 no se dejan instalar los models en la db: File "/usr/local/lib/python2.7/dist-packages/django/db/backends/postgresql_psycopg2/base.py", line 125, in _cursor raise ImproperlyConfigured("You need to specify NAME in your Django settings file.") django.core.exceptions.ImproperlyConfigured: You need to specify NAME in your Django settings file. Alguna idea de como solucionarlo?
El Jueves 2 de Junio de 2011 monk dijo:
Olvidenlo, era otro el problema :)
El Jueves 13 de Septiembre de 2012 Panchi dijo:
Genial!
El Jueves 23 de Mayo de 2013 Pedro dijo:
Existe otra alternativa que te permite incluso incluir las ciudades y/o estados de cada pais, esta toma toda la informacion de una BD que esta disponible en www.geonames.org y la sincroniza en tu BD de la aplicacion. El paquete lo puedes encontrar en https://github.com/yourlabs/django-cities-light y la documentacion en https://django-cities-light.readthedocs.org/en/1.5/database.html

Escribe un comentario:

captcha