Skip to main content

A django model & fixture containing all data from the countries table of

Project description

django-countries-plus provides a model and fixture containing all top level country data from (

This package also provides a convenience middleware that will look up a country in the database using a defined meta header, ex: the Cloudflare provided geoip META header HTTP_CF_IPCOUNTRY. This country object will be attached to the request object at

The model provides the following fields (original column name in parentheses).

  • iso (ISO)
  • iso3 (ISO3)
  • iso_numeric (ISO-Numeric)
  • fips (fips)
  • name (Country)
  • capital
  • area (Area(in sq km))
  • population (population)
  • continent (continent)
  • tld (tld)
  • currency_code (CurrencyCode)
  • currency_name (CurrencyName)
  • phone (Phone)
  • postal_code_format (Postal Code Format)
  • postal_code_regex (Postal Code Regex)
  • languages (Languages)
  • geonameid (geonameid)
  • neighbors (neighbours)
  • equivalent_fips_code (EquivalentFipsCode)


pip install django-countries-plus


  1. Add countries_plus to your INSTALLED_APPS

  2. Sync your fixtures:

    python syncdb
  3. In your code use:

    from countries_plus.models import Country
    usa = Country.objects.get(iso3='USA')

Enabling the optional middleware:

  1. Follow steps 1 & 2 above.

  2. Add countries_plus.middleware.AddRequestCountryMiddleware to your middleware.

  3. add the following two settings to your

    COUNTRIES_PLUS_COUNTRY_HEADER - A string defining the name of the meta header that provides the country code. Ex: ‘HTTP_CF_COUNTRY’ (from

    COUNTRIES_PLUS_DEFAULT_ISO - A string containing an iso code for the country you want to use as a fallback in the case of a missing or malformed geoip header. Ex: ‘US’ or ‘DE’ or ‘BR’


Should work on most versions of Django, however if you are using Django 1.7, tests will fail unless you are using Django 1.7.2 or higher due to a bug in earlier versions.

Integrating with django-languages-plus

If you also have django-languages-plus( installed then you can run the following command once to associate the two datasets and generate a list of culture codes (pt_BR for example):

from languages_plus.utils import associate_countries_and_languages

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for django-countries-plus, version 0.3.3
Filename, size File type Python version Upload date Hashes
Filename, size (41.4 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page