Historiquement, Django était livré avec django.contrib.localflavor, des parties de code plus particulièrement adaptées à des pays ou cultures spécifiques. Ce code est dorénavant livré séparément de Django, pour faciliter sa maintenance et pour réduire la taille du code de Django.
Le nouveau paquet localflavor s’appelle django-localflavor, contenant un module principal appelé localflavor et de nombreux sous-paquets nommés d’après le code de pays ISO 3166. Par exemple, localflavor.us est le paquet régionalisé pour les États-Unis.
La plupart de ces compléments localflavor contiennent des champs de formulaire spécifiques à un pays ; par exemple, un champ USStateField sachant comment valider les abréviations d’états des États-Unis ou un champ FISocialSecurityNumber sachant comment valider les numéros de sécurité sociale en Finlande.
Pour utiliser l’un de ces composants régionalisés, il suffit d’importer le sous-paquet correspondant. Par exemple, voici comment vous pouvez créer un formulaire avec un champ représentant le numéro de téléphone français :
from django import forms
from localflavor.fr.forms import FRPhoneNumberField
class MyForm(forms.Form):
my_french_phone_no = FRPhoneNumberField()
Pour de la documentation sur les utilitaires de l’application localflavor d’un pays particulier, consultez son fichier README.
Pour activer les traductions des applications localflavor, vous devez inclure le nom de l’application dans le réglage INSTALLED_APPS afin que le système d’internationalisation puisse trouver le catalogue des messages, comme expliqué dans Processus de découverte des traductions par Django.
Si vous avez par le passé utilisé l’ancien paquet django.contrib.localflavor ou l’une des versions temporaires de django-localflavor-*, suivez ces deux étapes simples pour mettre à jour votre code :
Installez le paquet externe django-localflavor à partir de PyPI.
Modifiez l’instruction d’importation de l’application afin de référencer le nouveau paquet.
Par exemple, modifiez :
from django.contrib.localflavor.fr.forms import FRPhoneNumberField
…comme ceci :
from localflavor.fr.forms import FRPhoneNumberField
Le code du nouveau paquet est identique (il a été copié directement depuis Django), vuos n’avez donc pas à vous préoccuper de rétrocompatibilité en termes de fonctionnalités. Seules les importations ont changé.
Dans Django 1.5, l’importation de django.contrib.localflavor génère un avertissement DeprecationWarning. Cela signifie que votre code fonctionne toujours, mais que vous devez le changer dès que possible.
Dans Django 1.6, l’importation de django.contrib.localflavor ne fonctionne plus.
Jan 13, 2016