четверг, 11 декабря 2014 г.

Django. GeoIP. Установка (Ubuntu, Mac OS X). Настройка.

Установка

Выполнение следующей команды часто заканчивается неуспешно

pip install geoip


Возникновение подобной ошибки говорит о необходимости установки GeoIP C Library

#include "GeoIP.h"

        ^

1 error generated.

error: command 'cc' failed with exit status 1


Решение этой проблемы зависит от используемой платформы.

Для Ubuntu достаточно установить следующий пакет



sudo apt-get install libgeoip-dev


Решение для Mac OS X



Качаем последнюю версию исходников. На момент написания статьи GeoIP-1.5.1.tar.gz


Распаковываем скаченный архив, заходим в директорию архива и выполняем команды

./configure
make
make check
sudo make install


Настройка


Для полноценной работы в проекте с GeoIP, необходимо скачать базу данных


База данных представлена в двух файлах

GeoIP.dat - база стран
GeoLiteCity.dat - база городов

В настройках проекта (setting.py) необходимо указать следующие настройки

  GEOIP_PATH = BASE_DIR     #  Директория с файлами-бд GeoIP (в данном случает корень проекта)
  GEOIP_COUNTRY = 'GeoIP.dat'     #  Имя файла с информацией о странах
  GEOIP_CITY = 'GeoLiteCity.dat'     #  Имя файла с информацией о городах


Пример использования


from django.contrib.gis.geoip import GeoIP

GeoIP().country(request.META['REMOTE_ADDR'])
#  {'country_name': u'Russian Federation', 'country_code': u'RU'}
GeoIP().city(request.META['REMOTE_ADDR'])
#  {'city': None, 'continent_code': u'EU', 'region': None, 'charset': 0, 'area_code': 0, 'longitude': 37.616600036621094, 'country_code3': u'RUS', 'latitude': 55.75, 'postal_code': None, 'dma_code': 0, 'country_code': u'RU', 'country_name': u'Russian Federation'}


Дополнительная информация