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

Probando los sabores de localflavor

Django incluye la aplicación django.contrib.localflavor que agrupa campos de formulario y widgets específicos para distintos países. Vamos a ver lo que podemos hacer con el "local flavor" para España.

Validar NIF/NIE/CIF

Podemos utilizar el campo es.forms.ESIdentityCardNumberField para validar la entrada comprobando si se trata de un NIF (españoles), NIE (extranjeros) o CIF (empresas) válido.

Validar cuentas bancarias españolas

El campo es.forms.ESCCCField permite validar si la entrada es un número de cuenta bancaria verificando que se trata de un Código Cuenta Cliente correcto. El formato debe ser EEEE-OOOO-CC-AAAAAAAAAA siendo E, O, C y A los dígitos de entidad bancaria, número de oficina, código de control y número de cuenta. El delimitador entre los dígitos puede ser un guión, un espacio o puede no usarse delimitador alguno.

Validar números de teléfono

El campo es.forms.ESPhoneNumberField permite validar números de teléfono españoles. Los números deben de tener 9 cifras siendo la primera de ellas 6, 8 ó 9.

Validar códigos postales de España

El campo es.forms.ESPostalCodeField permite validar códigos postales de España. Los códigos deben de tener 5 cifras, las primeras dos representan el número de provincia y deben estar entre 01 y 52.

Además de los campos de formularios también se incluyen dos widgets que permiten seleccionar provincias y regiones de España en formularios.

Seleccionar provincias en formularios

El widget es.forms.ESProvinceSelect consiste en un elemento select con todas las provincias de España.

Seleccionar comunidades autónomas

El widget es.forms.ESRegionSelect consiste en un elemento select con todas las comunidades autónomas.

Ejemplo con localflavor

Vamos a ver cómo crear un sencillo formulario en el que usuario tenga que introducir su nombre, su NIF/NIE/CIF, un número de teléfono, una provincia, un código postal y una cuenta bancaria:

from django import forms
from django.contrib.localflavor.es.forms import *

class Formulario(forms.Form):
    nombre = forms.CharField(max_length=80)
    nif = ESIdentityCardNumberField()
    tel = ESPhoneNumberField()
    provincia = forms.SelectField(widget=EsProvinceSelect())
    codigo_postal = ESPostalCodeField()
    cuenta = ESCCCField()

Publicado por Antonio Melé el Viernes 9 de Julio de 2010 Compártelo: Facebook: Twitter: | Categorías: forms, internacionalización

Entradas similares

Idiomas en nuestras URLs gracias a django-localeurl

django-localeurl es una aplicación que permite el uso de códigos de idiomas en las URLs de nuestro proyecto. Esto trae la ventaja de que ...


Modificar la QuerySet de un ModelChoiceField dinámicamente

El campo de formulario ModelChoiceField sirve para permitir la selección de un elemento entre los objetos resultantes de una QuerySet. La QuerySet inicial puede ...


 
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 ...


Formularios con Django sin SPAM

¿Quieres luchar contra el SPAM en tus formularios sin tener que modificarlos? Una forma sencilla de evitar gran parte del SPAM automático son los ...


 
 

2 comentarios:

El Jueves 15 de Julio de 2010 PerroVerd dijo:
Respecto al ESIdentityCardNumberField() le veo un problema. En NIFs de menos de 8 dígitos da como buenos los que comienzan por 0 y aquellos que no lo tienen, cosa que veo correcta, pero a la hora de guardar los datos los considera elementos diferentes lo que puede llevar a NIFs duplicados.
El Viernes 5 de Noviembre de 2010 Victor dijo:
Para el tema de la provincia no me ha funcionado así en la versión 1.2.3 de Django. He tenido que hacer lo siguiente: provincia = forms.CharField(widget=ESProvinceSelect()) Espero que a alguien más le sirva. Un saludo.

Escribe un comentario: