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

Slughifi: slugs a prueba de caracteres internacionales

Slughifi es un código que mejora las características de la función slugify de django.template.defaultfilters. Soporta muchos más caracteres internacionales con todo tipo ...


Snippet de vista para i18n

Una de las cosas que nos ofrece Django es vistas genéricas y soporte para localización (aka i10n) e internacionalización (aka i18n). Entonces una vez ...


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


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


 
 

1 comentario:

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.

Escribe un comentario: