Die localflavor-Add-Ons
Diese Dokumentation gilt für Djangos Entwicklerversion, die zum Teil erhebliche Unterschiede zur letzten veröffentlichen Version aufweist.
Der Philosophie “Batterien enthalten” folgend, enthält Django einigen Code, der für bestimmte Länder oder Kulturen nützlich ist. Dieser Code wird “localflavor”-Add-Ons genannt und befindet sich im Paket django.contrib.localflavor.
In diesem Paket ist der länder- oder kulturspezifische Code in Unterpaketen organisiert, benannt nach den Ländercodes von ISO 3166.
Die meisten der localflavor Add-Ons sind lokalisierte Formularkomponenten, die aus dem newforms-Framework stammen –– z. B. ein USStateField, das die Abkürzungen für U.S.-Staaten überprüfen kann und FISocialSecurityNumber, das finnische Sozialversicherungsnummern prüft.
Um eine dieser lokalisierten Komponenten zu benutzen, importiere einfach das relevante Unterpaket. Hier ist ein Beispiel, wie du ein Formular mit einem Feld für eine französische Telefonnummer erstellen kannst:
from django import newforms as forms
from django.contrib.localflavor import fr
class MyForm(forms.Form):
my_french_phone_no = fr.forms.FRPhoneNumberField()
Unterstützte Länder
Die von localflavor unterstützten Länder sind:
- Argentinien
- Australien
- Brasilien
- Chile
- Deutschland
- Finnland
- Frankreich
- Großbritannien
- Indien
- Island
- Italien
- Japan
- Kanada
- Mexiko
- Niederlande
- Norwegen
- Peru
- Polen
- Schweiz
- Slowakei
- Spanien
- Südafrika
- Vereinigte Staaten von Amerika
Das Paket localflavor enthält ebenfalls ein generisches Unterpaket, das nützlichen Code enthält, der nicht spezifisch für ein bestimmtes Land oder eine Kultur ist. Derzeit definiert es Datum- und Datum/Uhrzeit-Eingabefelder aus newforms, aber mit Nicht-US-Standardformaten. Hier ist ein Beispiel, wie man sie benutzt:
from django import newforms as forms
from django.contrib.localflavor import generic
class MyForm(forms.Form):
my_date_field = generic.forms.DateField()
Flavors hinzufügen
Wir würden sehr gern noch mehr dieser Pakete zu Django hinzufügen. Wenn du also Code beisteuern möchtest, erstelle bitte ein Ticket. Wir bitten aber darum, für Zeichenketten Unicode-Objekte (u'mystring') zu verwenden, anstatt die Codierung direkt in der Datei einzustellen. Schau dir eines der existierenden Flavors als Vorlage an.
Argentinien (django.contrib.localflavor.ar)
ARPostalCodeField
Ein Formularfeld, das die Eingabe entweder auf eine klassische, vierstellige argentinische Postleitzahl überprüft oder auf ein CPA.
ARProvinceSelect
Ein Select-Widget, das eine Liste von Argentiniens Provinzen als Auswahl benutzt.
Australien (django.contrib.localflavor.au)
AUPostCodeField
Ein Formularfeld, das die Eingabe auf eine australische Postleitzahl hin überprüft.
AUPhoneNumberField
Ein Formularfeld, das die Eingabe auf eine australische Telefonnummer hin überprüft. Korrekte Nummern bestehen aus zehn Zahlen.
AUStateSelect
Ein Select-Widget, das eine Liste von Australiens Staaten/Territorien als Auswahl benutzt.
Brasilien (django.contrib.localflavor.br)
BRPhoneNumberField
Ein Formularfeld, das die Eingabe auf eine brasilianische Telefonnummer hin überprüft, im Format XX-XXXX-XXXX,
BRZipCodeField
Ein Formularfeld, das die Eingabe auf eine brasilianische Postleitzahl hin überprüft, im Format XXXXX-XXX.
BRStateSelect
Ein Select-Widget, das eine Liste von brasilianischen Staaten/Territorien als Auswahl benutzt.
Kanada (django.contrib.localflavor.ca)
CAPhoneNumberField
Ein Formularfeld, das die Eingabe auf eine kanadische Telefonnummer hin überprüft, im Format XXX-XXX-XXXX.
CAPostalCodeField
Ein Formularfeld, das die Eingabe auf eine kanadische Postleitzahl hin überprüft, im Format XXX XXX.
CAProvinceField
Ein Formularfeld, das die Eingabe auf einen kanadischen Provinznamen oder eine Abkürzung hin überprüft.
CASocialInsuranceNumberField
Ein Formularfeld, das die Eingabe auf eine kanadische Sozialversicherungsnummer (SIN) hin überprüft. Eine korrekte Nummer muss das Format XXX-XXX-XXX haben und einer Überprüfung mit dem Luhn “mod 10”-Algorithmus standhalten.
CAProvinceSelect
Ein Select-Widget, das eine Liste von kanadischen Provinzen und Territorien als Auswahl benutzt.
Chile (django.contrib.localflavor.cl)
CLRutField
Ein Formularfeld, das die Eingabe auf eine chilenische, nationale Identifikationsnummer (‘Rol Unico Tributario’ oder RUT) hin überprüft. Das korrekte Format ist XX.XXX.XXX-X.
CLRegionSelect
Ein Select-Widget, das eine Liste von chilenischen Regionen (Regiones) als Auswahl benutzt.
Finnland (django.contrib.localflavor.fi)
FISocialSecurityNumber
Ein Formularfeld, das die Eingabe auf eine finnische Sozialversicherungsnummer hin überprüft.
FIZipCodeField
Ein Formularfeld, das die Eingabe auf eine finnische Postleitzahl hin überprüft. Korrekte Postleitzahlen bestehen aus fünf Zahlen.
FIMunicipalitySelect
Ein Select-Widget, das eine Liste von finnischen Stadtverwaltungen als Auswahl benutzt.
Frankreich (django.contrib.localflavor.fr)
FRPhoneNumberField
Ein Formularfeld, das die Eingabe auf eine französische, örtliche Telefonnummer hin überprüft. Das korrekte Format ist 0X XX XX XX XX. 0X.XX.XX.XX.XX und 0XXXXXXXXX bestehen den Test, werden jedoch zu 0X XX XX XX XX korrigiert.
FRZipCodeField
Ein Formularfeld, das die Eingabe auf eine französische Postleitzahl hin überprüft. Korrekte Postleitzahlen bestehen aus fünf Zahlen.
FRDepartmentSelect
Ein Select-Widget, das eine Liste von französischen Gebieten als Auswahl benutzt.
Deutschland (django.contrib.localflavor.de)
DEIdentityCardNumberField
Ein Formularfeld, das die Eingabe auf eine deutsche Personalausweisnummer (Personalausweis) hin überprüft. Korrekte Nummern haben das Format XXXXXXXXXXX-XXXXXXX-XXXXXXX-X, von denen keine Gruppe komplett aus Nullen bestehen darf.
DEZipCodeField
Ein Formularfeld, das die Eingabe auf eine deutsche Postleitzahl hin überprüft. Korrekte Postleitzahlen bestehen aus fünf Zahlen.
Niederlande (django.contrib.localflavor.nl)
NLPhoneNumberField
Ein Formularfeld, das die Eingabe auf eine niederländische Telefonnummer hin überprüft.
NLSofiNumberField
Ein Formularfeld, das die Eingabe auf eine niederländische Sozialversicherungsnummer (SoFI/BSN) hin überprüft.
NLZipCodeField
Ein Formularfeld, das die Eingabe auf eine niederländische Postleitzahl hin überprüft.
NLProvinceSelect
Ein Select-Widget, das eine Liste von niederländischen Provinzen als Auswahl benutzt.
Island (django.contrib.localflavor.is_)
ISIdNumberField
Ein Formularfeld, das die Eingabe auf eine isländische Identifikationsnummer (kennitala) hin überprüft. Das Format ist XXXXXX-XXXX.
ISPhoneNumberField
Ein Formularfeld, das die Eingabe auf eine isländische Telefonnummer (sieben Zahlen mit einem optionalen Bindestrich oder Leerzeichen nach den ersten drei Zahlen) hin überprüft.
ISPostalCodeSelect
Ein Select-Widget, das eine Liste von isländischen Postleitzahlen als Auswahl benutzt.
Indien (django.contrib.localflavor.in_)
INStateField
Ein Formularfeld, das die Eingabe auf einen indischen Staats-/Territorium-Namen oder Abkürzung hin überprüft. Die Eingabe wird auf die standardmäßige, zwei Buchstaben lange Autoregistrationsabkürzung für den gewählen Staat oder das Territorium normalisiert.
INZipCodeField
Ein Formularfeld, das die Eingabe auf eine indische Postleitzahl hin überprüft, im Format XXXXXXX.
INStateSelect
Ein Select-Widget, das eine Liste von indischen Staaten/Territorien als Auswahl benutzt.
Italien (django.contrib.localflavor.it)
ITSocialSecurityNumberField
Ein Formularfeld, das die Eingabe auf eine italienische Sozialversicherungsnummer (codice fiscale) hin überprüft.
ITZipCodeField
Ein Formularfeld, das die Eingabe auf italienische Postleitzahlen hin überprüft. Korrekte Postleitzahlen bestehen aus fünf Zahlen.
ITProvinceSelect
Ein Select-Widget, das eine Liste von italienischen Provinzen als Auswahl benutzt.
Japan (django.contrib.localflavor.jp)
JPPostalCodeField
Ein Formularfeld, das die Eingabe auf eine japanische Postleitzahl hin überprüft. Es akzeptiert sieben Zahlen, mit oder ohne Bindestrich.
JPPrefectureSelect
Ein Select-Widget, das eine Liste von japanischen Präfekturen als Auswahl benutzt.
Mexiko (django.contrib.localflavor.mx)
Norwegen (django.contrib.localflavor.no)
NOSocialSecurityNumber
Ein Formularfeld, das die Eingabe auf eine norwegische Sozialversicherungsnummer (personnummer) hin überprüft.
NOZipCodeField
Ein Formularfeld, das die Eingabe auf eine norwegische Postleitzahl hin überprüft. Korrekte Postleitzahlen bestehen aus vier Zahlen.
NOMunicipalitySelect
Ein Select-Widget, das eine Liste von norwegischen Stadtverwaltungen (fylker) als Auswahl benutzt.
Peru (django.contrib.localflavor.pe)
PERUCField
Ein Formularfeld, das die Eingabe auf eine RUC (Registro Unico de Contribuyentes) Nummer hin überprüft. Korrekte RUC-Nummern haben 11 Zahlen.
PEDepartmentSelect
Ein Select-Widget, das eine Liste von peruanischen Gebieten als Auswahl benutzt.
Polen (django.contrib.localflavor.pl)
PLNationalIdentificationNumberField
Ein Formularfeld, das die Eingabe auf eine polnische, nationale Identifikationsnummer (PESEL) hin überprüft.
PLNationalBusinessRegisterField
Ein Formularfeld, das die Eingabe auf eine polnische “National Official Business Register Number” (REGON) hin überprüft, die entweder sieben oder neun Zahlen hat. Der Algorithmus der Prüfsummer, der für REGON-Nummern benutzt wird ist unter http://wipos.p.lodz.pl/zylla/ut/nip-rego.html dokumentiert.
PLPostalCodeField
Ein Formularfeld, das die Eingabe auf eine polnische Postleitzahl hin überprüft. Das korrekte Format ist XX-XXX, wobei X eine Zahl ist.
PLTaxNumberField
Ein Formularfeld, das die Eingabe auf eine polnische Steuernummer (NIP) hin überprüft. Korrekte Formate sind XXX-XXX-XX-XX oder XX-XX-XXX-XXX. Der Algorithmus für die Prüfsummer der NIP-Nummern ist unter http://wipos.p.lodz.pl/zylla/ut/nip-rego.html dokumentiert.
PLAdministrativeUnitSelect
Ein Select-Widget, das eine Liste von polnischen Verwaltungseinheiten als Auswahl benutzt.
PLVoivodeshipSelect
Ein Select-Widget, das eine Liste von polnischen Woiwodeschaften (Verwaltungsprovinzen) als Auswahl benutzt.
Slowakei (django.contrib.localflavor.sk)
SKPostalCodeField
Ein Formularfeld, das die Eingabe auf eine slovakische Postleitzahl hin überprüft. Korrekte Formate sind XXXXX oder XXX XX, wo X eine Zahl ist.
Südafrika (django.contrib.localflavor.za)
ZAIDField
Ein Formularfeld, das die Eingabe auf eine südafrikanische Identifikationsnummer hin überprüft. Die Prüfung benutzt den Luhn-Algorithmus und eine vereinfachte (z. B. nicht komplett korrekte) Überprüfung des Geburtstdatums.
ZAPostCodeField
Ein Formularfeld, das die Eingabe auf eine südafrikanische Postleitzahl hin überprüft. Korrekte Postleitzahlen bestehen aus vier Zahlen.
Spanien (django.contrib.localflavor.es)
ESIdentityCardNumberField
Ein Formularfeld, das die Eingabe auf eine spanische NIF/NIE/CIF (Fiscal Identification Number) hin überprüft.
ESCCCField
Ein Formularfeld, das die Eingabe auf eine spanisch Bankkontonummer (Codigo Cuenta Cliente oder CCC) hin überprüft. Eine korrekte CCC-Nummer hat das Format EEEE-OOOO-CC-AAAAAAAAAA, wo das E, O, C und A Zahlen sind, die Dienstelle, Büro, Prüfsumme und Konto entsprechend kennzeichnen. Die erste Prüfsumme überprüft die Dienststelle und das Büro. Die zweite Prüfsumme überprüft das Konto. Es ist ebenfalls korrekt, eine Leerstelle als Trenner zu benutzen, oder keinen Trenner zu verwenden.
ESPhoneNumberField
Ein Formularfeld, das die Eingabe auf eine spanische Telefonnummer hin überprüft. Korrekte Nummern haben neun Zahlen, die ersten davon sind 6, 8 oder 9.
ESPostalCodeField
Ein Formularfeld, das die Eingabe auf eine spanische Postleitzahl hin überprüft. Korrekte Postleitzahlen haben fünf Zahlen, die ersten zwei befinden sich im Bereich von 01 bis 52, und repräsentieren die Provinz.
Schweiz (django.contrib.localflavor.ch)
CHIdentityCardNumberField
Ein Formularfeld, das die Eingabe auf eine schweizer Personalausweisnummer hin überprüft. Eine korrekte Nummer muss das Format X1234567<0 oder 1234567890 bestätigen und die korrekte Prüfsumme haben — siehe http://adi.kousz.ch/artikel/IDCHE.htm.
CHPhoneNumberField
Ein Formularfeld, das die Eingabe auf eine schweizer Telefonnummer hin überprüft. Das korrekte Format ist 0XX XXX XX XX. 0XX.XXX.XX.XX und 0XXXXXXXXX bestehen den Test, werden aber auf 0XX XXX XX XX korrigiert.
CHZipCodeField
Ein Formularfeld, das die Eingabe auf eine schweizer Postleitzahl hin überprüft. Korrekte Postleitzahlen bestehen aus vier Zahlen.
Großbritannien (django.contrib.localflavor.uk)
UKPostcodeField
Ein Formularfeld, das die Eingabe auf eine britische Postleitzahl hin überprüft. Der verwendete reguläre Ausdruck stammt aus dem Schema für Britische Standard-BS7666-Adresstypen auf http://www.govtalk.gov.uk/gdsc/schemas/bs7666-v2-0.xsd.
UKCountySelect
Ein Select-Widget, das eine Liste von britischen Ländern/Regionen als Auswahl benutzt.
Vereinigte Staaten von Amerika (django.contrib.localflavor.us)
USSocialSecurityNumberField
Ein Formularfeld, das die Eingabe auf eine U.S. Sozialversicherungsnummer (SSN) hin überprüft. Eine korrekte SSN muss den folgenden Regeln folgen:
- Format von XXX-XX-XXXX
- Keine Gruppe von Zahlen besteht komplett aus Nullen
- Führende Gruppen von Zahlen können nicht 666 sein
- Nummer darf nicht im werblichen Block von 987-65-4320 bis 987-65-4329 sein
- Nummer darf nicht als ungültig bekannt sein, durch eine umfassende werbliche Benutzung oder Verbreitung (z. B. die Woolworth-Nummer oder die 1962 Werbenummer)
USStateField
Ein Formularfeld, das die Eingabe auf einen U.S.-Bundesstaatsnamen oder Abkürzung hin überprüft. Die Eingabe wird auf die standardmäßige, zwei Buchstaben lange Postdienstabkürzung für den gewählten Staat normalisiert.
USZipCodeField
Ein Formularfeld, das die Eingabe auf eine U.S.-Postleitzahl hinüberprüft. Korrekte Formate sind XXXXX oder XXXXX-XXXX.
USStateSelect
Ein Select-Widget, das eine Liste von U.S.-Bundesstaaten/Territorien als Auswahl benutzt.