Os add-ons “local flavor”

Seguindo sua filosofia de “beterias inclusas”, o Django vem acompanhado de peças sortidas de código que são úteis para paises e culturas particulares. Estes são chamados de “local flavor” (sabores locais) e ficam no pacote django.contrib.localflavor.

Dentro desse pacote, ó código de um país ou uma cultura específica fica dentro de sub-pacotes, chamados usando códigos de país ISO 3166.

A maioria dos add-ons localflavor estão localizados na forma de componentes derivando do framework forms – por exemplo, um USStateField que sabe como validar abreviações de estados do E.U.A., e um FISocialSecurityNumber que sabe como validar os números do seguro social Finlandês.

Para usar um desses componentes localizados, basta importar o sub-pacote relevante. Por exemplo, aqui tem como você consegue criar um formulário com um campo representando um número de telefone Francês:

from django import forms
from django.contrib.localflavor.fr.forms import FRPhoneNumberField

class MyForm(forms.Form):
    my_french_phone_no = FRPhoneNumberField()

Paises suportados

Os paises atualmente suportados pelo localflavor são

O pacote django.contrib.localflavor também inclui um sub-pacote genérico, contendo código útil que não são específicos para um único país ou cultura. Atualmente, é definido campos de entrada date e datetime baseados naqueles vindos de forms, mas com formatos que não seguem o padrão dos E.U.A. Aqui temos um exemplo de como usá-los:

from django import forms
from django.contrib.localflavor import generic

class MyForm(forms.Form):
    my_date_field = generic.forms.DateField()

Adicionando sabores

Nós adoraríamos adicionar mais deles no Django, então por favor crie um ticket com qualquer código que você gostaria de contribuir. Uma coisa que nós pedimos é que você, por favor, use objetos Unicode (u'mystring') para strings, ao invês de configurar a codificação no arquivo. Veja qualquer um dos flavors como exemplos.

Argentina (ar)

class ar.forms.ARPostalCodeField

Um campo de formulário que valida a entrada como um número clássico de quatro dígitos do código postal ou um CPA.

class ar.forms.ARDNIField

Um campo de formulário que valida a entrada como um número de Documento Nacional de Identidade (DNI).

class ar.forms.ARCUITField

Um campo de formulário que valida a entrada como um número de Código Único de Identificação Tributária (CUIT).

class ar.forms.ARProvinceSelect

Um widget Select que usa uma lista de províncias argentinas e cidades autônomas como suas opções.

Australia (au)

class au.forms.AUPostCodeField

Um campo de formulário que valida a entrada como um código postal austráliano.

class au.forms.AUPhoneNumberField

Um campo de formulário que valida a entrada como um número de telefone australiano. Números válidos possuem dez dígitos.

class au.forms.AUStateSelect

Um widget Select que usa uma lista de estados/territórios australianos como suas opções.

Austria (at)

class at.forms.ATZipCodeField

Um campo de formulário que valida sua entrada como um código zip austríaco.

class at.forms.ATStateSelect

Um widget Select que usa uma lista de estados austríacos como suas opções.

class at.forms.ATSocialSecurityNumberField

Um campo de formulário que valida sua entrada como um número de seguro social austríaco.

Brazil (br)

class br.forms.BRPhoneNumberField

Um campo de formulário que valida a entrada como um número de telefone brasileiro, com o formato XX-XXXX-XXXX.

class br.forms.BRZipCodeField

Um campo de formulário que valida a entrada como um C.E.P. brasileiro, com o formato XXXXX-XXX.

class br.forms.BRStateSelect

Um widget Select que usa uma lista de estados/territórios brasileiros como suas opções.

Canada (ca)

class ca.forms.CAPhoneNumberField

Um campo de formulário que valida a entrada como um número de telefone canadence, como o formato XXX-XXX-XXXX.

class ca.forms.CAPostalCodeField

Um campo de formulário que valida a entrada como um código postal canadence, com o formato XXX XXX

class ca.forms.CAProvinceField

Um campo de formulário que valida a entrada como um nome ou abreviação de província canadense.

class ca.forms.CASocialInsuranceNumberField

Um campo de formulário que valida a entrada como um Número de Seguro Social Canadense (SIN). Um número válido deve ter o formato XXX-XXX-XXX e passar um Luhn mod-10 checksum.

class ca.forms.CAProvinceSelect

Um widget Select que usa uma lista de províncias e territórios canadenses como suas opções.

Chile (cl)

class cl.forms.CLRutField

Um campo de formulário que valida a entrada como um número de identificação nacional chilena ('Rol Unico Tributario' or RUT). O formato válido é XX.XXX.XXX-X.

class cl.forms.CLRegionSelect

Um widget Select que usa uma lista de regiões chilenas (Regiões) como suas opções.

Finland (fi)

class fi.forms.FISocialSecurityNumber

Um campo de formulário que valida a entrada como um número de seguro social finlandês.

class fi.forms.FIZipCodeField

Um campo de formulário que valida a entrada como de um código zip finlandês. Códigos válidos consistem em cinco dígitos.

class fi.forms.FIMunicipalitySelect

Um widget Select que usa uma lista de municípios finlandeses como suas opções.

France (fr)

class fr.forms.FRPhoneNumberField

Um campo de formulário que valida a entrada como um número local francês. O formato correto é 0X XX XX XX XX. 0X.XX.XX.XX.XX e 0XXXXXXXXX validam mas são corrigidos para 0X XX XX XX XX.

class fr.forms.FRZipCodeField

Um campo de formulário que valida a entrada como um código zip fancês. Códigos válidos consistem em cinco dígitos.

class fr.forms.FRDepartmentSelect

Um widget Select que usa uma lista de departamentos franceses como suas opções.

Germany (de)

class de.forms.DEIdentityCardNumberField

Um campo de formulário que valida a entrada como um número de carteira de identidade alemã (Personalausweis). Números válidos têm o formato XXXXXXXXXXX-XXXXXXX-XXXXXXX-X, com nenhum grupo com somente zeros.

class de.forms.DEZipCodeField

Um campo de formulário que valida a entrada como um código zip alemão. Códigos válidos consistem em cinco dígitos.

class de.forms.DEStateSelect

Um widget Select que usa uma lista de estados alemãos como suas opções.

The Netherlands (nl)

class nl.forms.NLPhoneNumberField

Um campo de formulário que valida a entrada como um número de telefone holandês.

class nl.forms.NLSofiNumberField

Um campo de formulário que valida a entrada como um número de seguro social holandês (SoFI/BSN).

class nl.forms.NLZipCodeField

Um campo de formulário que valida a entrada como um código zip holandês.

class nl.forms.NLProvinceSelect

Um widget Select que usa uma lista de províncias holandesas como uma lista de opções..

Iceland (is_)

class is_.forms.ISIdNumberField

Um campo de formulário que valida a entrada como um número de identificação islandês (kennitala). O formato é XXXXXX-XXXX.

class is_.forms.ISPhoneNumberField

Um campo de formulário que valida a entrada como um número de telefone da Islândia (sete dígitos com um hífen opcional depois dos primeiros três dígitos).

class is_.forms.ISPostalCodeSelect

Um widget Select que usa uma lista de códigos postais da Islândia como suas opções.

India (in_)

class in.forms.INStateField

Um campo de formulário que valida a entrada como o nome ou abreviação de um estado/território indiano. A entrada é normalizada para o padrão de duas letras do veículo de registro de abreviação para o dado estado ou território.

class in.forms.INZipCodeField

Um campo de formulário que valida a entrada como um código zip indiano, com o formato XXXXXXX.

class in.forms.INStateSelect

Um widget Select que usa uma lista de estados/territórios indianos como suas opções.

Italy (it)

class it.forms.ITSocialSecurityNumberField

Um campo de formulário que valida a entrada como um número de seguro social italiano (condição fiscal).

class it.forms.ITVatNumberField

Um campo de formulário que valida números italianos VAT (partida IVA).

class it.forms.ITZipCodeField

Um campo de formulário que valida a entrada como um código zip italiano. Códigos válidos devem conter cinco dígitos.

class it.forms.ITProvinceSelect

Um widget Select que usa uma lista de províncias italianas como suas opções.

class it.forms.ITRegionSelect

Um widget Select que usa uma lista de regiões italianas como suas opções.

Japan (jp)

class jp.forms.JPPostalCodeField

Um campo de formulário que valida a entrada como um código postal japonês. Ele aceita sete dígitos, com ou sem hífen.

class jp.forms.JPPrefectureSelect

Um widget Select que usa uma lista de prefeituras japonesas como suas opções.

Mexico (mx)

class mx.forms.MXStateSelect

Um widget Select que usa uma lista de estados mexicanos como suas opções.

Norway (no)

class no.forms.NOSocialSecurityNumber

Um campo de formulário que valida a entrada como um número de seguro social norueguesa (personnummer).

class no.forms.NOZipCodeField

Um campo de formulário que valida a entrada como um código zip norueguês. Códigos válidos possuem quatro dígitos.

class no.forms.NOMunicipalitySelect

Um widget Select que usa uma lista de minicípios noruegueses (fylker) como suas opções.

Peru (pe)

class pt.forms.PEDNIField

Um campo de formulário que valida a entrada como uma DNI (Identidade nacional peruana).

class pt.forms.PERUCField

Um campo de formulário que valida a entrada como um número RUC (Registro Unico de Contribuintes). Números RUC válidos possuem 11 dígitos.

class pt.forms.PEDepartmentSelect

Um widget Select que usa uma lista de Departamentos Peruanos como suas opções.

Poland (pl)

class pl.forms.PLNationalIdentificationNumberField

Um campo de formulário que valida a entrada como um número de identificação polonês (PESEL).

class pl.forms.PLNationalBusinessRegisterField

Um campo de formulário que valida a entrada como um Número de Registro Nacional Oficial Polonês (REGON), tendo tanto sete quando nove dígitos. O algorítmo checksum é usado para REGONs está documentado em http://wipos.p.lodz.pl/zylla/ut/nip-rego.html.

class pl.forms.PLPostalCodeField

Um campo de formulário que valida a entrada como um código postal polonês. O formato válido é XX-XXX, onde X é um dígito.

class pl.forms.PLTaxNumberField

Um campo de formulário que valida a entrada como a Número de Taxa Polonês (NIP). Formatos válidos são XXX-XXX-XX-XX ou XX-XX-XXX-XXX. O algorítmo checksum usado para NIPs está documentado em http://wipos.p.lodz.pl/zylla/ut/nip-rego.html.

class pl.forms.PLAdministrativeUnitSelect

Um widget Select que usa uma lista de unidades administrativas polonesas como suas opções.

class pl.forms.PLVoivodeshipSelect

Um widget Select que usa uma lista de voivodeships polonesas (províncias administrativas) como suas opções.

Romania (ro)

class ro.forms.ROCIFField

Um campo de formulário que valida códigos de identificação fiscal (CIF). O valor retornado mostra o RO na frente, se fornecido.

class ro.forms.ROCNPField

Um campo de formulário que valida códigos numéricos pessoais (CNP).

class ro.forms.ROCountyField

Um campo de formulário que valida sua entrada como um um nome ou abreviação de uma comarca (judete) romena. Ele normaliza a entrada como uma abreviatura padrão de registro de veículo para a comarca informada. Este campo só aceita nomes escritos com sinais diacríticos; considere usar ROCountySelect como uma alternativa.

class ro.forms.ROCountySelect

Um widget Select que usa uma lista de países romenos (judete) como suas opções.

class ro.forms.ROIBANField

Um campo de formulário que valida sua entrada como um Número de Conta de Banco Internacional Romeno (IBAN). O formato válido é ROXX-XXXX-XXXX-XXXX-XXXX-XXXX, com ou sem hífens.

class ro.forms.ROPhoneNumberField

Um campo de formulário que valida como números de telefone romenos, números curtos especiais excluídos.

class ro.forms.ROPostalCodeField

Um campo de formulário que valida como um código postal romeno.

Slovakia (sk)

class sk.forms.SKPostalCodeField

Um campo de formulário que valida a entrada como um código postal eslovaco. Formatos válidos são XXXXX ou XXX XX, onde X é um dígito.

class sk.forms.SKDistrictSelect

Um widget Select que usa uma lista de distritos eslovacos como suas opções.

class sk.forms.SKRegionSelect

Um widget Select que usa uma lista de regiões eslovacas como suas opções.

South Africa (za)

class za.forms.ZAIDField

Um campo de formulário que valida a entrada como um número ID sulafricano. A validação usa o Luhn checksum e um verificador simplista (i.e., não é totalmente exato) para a data do nascimento.

class za.forms.ZAPostCodeField

Um campo de formulário que valida a entrada como um código postal da Africa do Sul. Códigos postais válidos devem ter quatro dígitos.

Spain (es)

class es.forms.ESIdentityCardNumberField

Um campo de formulário que valida a entrada como um código NIF/NIE/CIF espanhol (Número de identificação Fiscal).

class es.forms.ESCCCField

Um campo de formulário que valida a entrada como um número de conta de banco espanhol (Código Conta Cliente ou CCC). Um número CCC válido tem o formato EEEE-OOOO-CC-AAAAAAAAAA, onde os dígitos E, O, C e A denotam a entidade, office (escritório), checksum e account (conta), repectivamente. O primeiro dígito checksum valida a entidade e o escritório. O segundo dígito checksum valida a conta. Ele também é valido usar um espaço como um delimitador, ou não usar delimitadores.

class es.forms.ESPhoneNumberField

Um campo de formulário que valida a entrada como um número de telefone espanhol. Números válidos possuem nove dígitos, o primeiro dos quais é 6, 8 ou 9.

class es.forms.ESPostalCodeField

Um campo de formulário que valida a entrada como um código postal espanhol. Códigos válidos possuem cinco dígitos, os dois primeiros estando entre 01 e 52, representando a província.

class es.forms.ESProvinceSelect

Um widget Select que usa uma lista de províncias espanholas como suas opções.

class es.forms.ESRegionSelect

Um widget Select que usa uma lista de regiões espanholas como suas opções.

Switzerland (ch)

class ch.forms.CHIdentityCardNumberField

Um campo de formulário que valida a entrada como um número de cartão de identidade suíça. Um número válido deve estar no formato X1234567<0 ou 1234567890 e ter os checksums corretos -- veja http://adi.kousz.ch/artikel/IDCHE.htm.

class ch.forms.CHPhoneNumberField

Um campo de formulário que valida a entrada como um número de telefone suíço. O formato correto é 0XX XXX XX XX. 0XX.XXX.XX.XX e 0XXXXXXXXX validam mas são convertidos para 0XX XXX XX XX.

class ch.forms.CHZipCodeField

Um campo de formulário que valida a entrada como um código zip suíço. Códigos válidos consitem em quatro dígitos.

class ch.forms.CHStateSelect

Um widget Select que usa uma lista de estados suíços como suas opções.

United Kingdom (uk)

class uk.forms.UKPostcodeField

Um campo de formulário que valida a entrada como um código postal do Reino Unido. A expressão regular usada é proveniente do esquema para os tipos de endereço no padrão britânico (British Standard) BS7666 em http://www.govtalk.gov.uk/gdsc/schemas/bs7666-v2-0.xsd.

class uk.forms.UKCountySelect

Um widget Select que usa uma lista de paises/regiões do Reino Unido como suas opções.

class uk.forms.UKNationSelect

Um widget Select que usa uma lista de nações do Reino Unido como suas opções.

United States of America (us)

class us.forms.USPhoneNumberField

Um campo de formulário que valida a entrada como um número de telefone dos E.U.A.

class us.forms.USSocialSecurityNumberField

Um campo de formulário que valida a entrada como um Número de Seguro Social dos E.U.A. (SSN).

Um SSN válido deve obedecer as seguintes regras:

  • Formato de XXX-XX-XXXX
  • Nenhum grupo de dígitos pode consistir inteiramente de zeros
  • O início de um grupo de dígitos não pode ser 666
  • Os números não podem estar em blocos promocionais 987-65-4320 até 987-65-4329
  • Um número não conhecido pode ser inválido devido o uso ou distribuição de promoção generalizada (e.g., o número do Woolworth ou o número promocional 1962)
class us.forms.USStateField

Um campo de formulário que valida a entrada como um nome ou abreviação de um estado dos E.U.A. A entrada é normalizada para o padrão de duas letras da abreviação do serviço postal para o estado informado.

class us.forms.USZipCodeField

Um campo de formulário que valida a entrada como um código ZIP dos E.U.A. Os formatos válidos são XXXXX ou XXXXX-XXXX.

class us.forms.USStateSelect

Um widget Select que usa uma lista de estados/territórios dos E.U.A. como suas opções.

class us.models.PhoneNumberField

Um CharField que verifica se o valor é um número de telefone válido dos E.U.A. (no formato XXX-XXX-XXXX).

class us.models.USStateField

Um campo de model que o formulário representa como um campo forms.USStateField e armazena a abreviação de duas letras dos E.U.A. no banco de dados.