Django Local Flavor

5.0 · active · verified Sun Apr 12

django-localflavor is a collection of country-specific Django helpers, including form fields, form widgets, and model fields, useful for particular countries or cultures. It provides localized components for postal codes, government IDs, and regional selections. Originally part of Django's `contrib` apps, it was extracted into a separate package starting with Django 1.5 for easier maintenance. The current version is 5.0, and new releases generally follow Django's major version number, with a compatible version released within one month of each Django release.

Warnings

Install

Imports

Quickstart

This example demonstrates creating a simple Django form using `USStateField` from `django-localflavor`. It includes minimal Django settings configuration to make the snippet runnable for demonstration purposes. Users would typically integrate this into an existing Django project's forms.py and views.py.

import os
from django import forms
from localflavor.us.forms import USStateField # Example: using a US-specific field
from django.conf import settings

# Minimal Django settings for standalone execution or in a Django project context
if not settings.configured:
    settings.configure(
        INSTALLED_APPS=[
            'localflavor', # Required for translations and some internal workings
        ],
        DEBUG=True,
        SECRET_KEY=os.environ.get('DJANGO_SECRET_KEY', 'a-very-secret-key-for-testing-only'),
        # Add other necessary settings like TEMPLATES, DATABASES for a full Django app
    )

class MyUSForm(forms.Form):
    state = USStateField()
    city = forms.CharField(max_length=100)

# Example usage (e.g., in a Django view or a test)
def process_form_data():
    # Simulate form submission
    form_data = {'state': 'NY', 'city': 'New York'}
    form = MyUSForm(form_data)

    if form.is_valid():
        print(f"Form is valid. State: {form.cleaned_data['state']}, City: {form.cleaned_data['city']}")
        return form.cleaned_data
    else:
        print("Form is not valid. Errors:", form.errors)
        return None

if __name__ == '__main__':
    print("Processing valid form data:")
    process_form_data()

    print("\nProcessing invalid form data:")
    invalid_form_data = {'state': 'XX', 'city': 'Invalid City'}
    invalid_form = MyUSForm(invalid_form_data)
    if not invalid_form.is_valid():
        print("Form is not valid. Errors:", invalid_form.errors)

view raw JSON →