Установка
Выполнение следующей команды часто заканчивается неуспешно
pip install geoip
Возникновение подобной ошибки говорит о необходимости установки GeoIP C Library
#include "GeoIP.h"
^
1 error generated.
error: command 'cc' failed with exit status 1
^
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
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' # Имя файла с информацией о городах
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'}
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'}