Spec-Zone.ru › Django 1.9

Геолокация с GeoIP

Устаревшее начиная с версии 1.9: Этот модуль устарел в пользу django.contrib.gis.geoip2, который поддерживает IPv6 и формат базы данных GeoLite2.

Объект GeoIP является оболочкой ctypes для MaxMind GeoIP C API. [1]

Для выполнения геолокации на основе IP-адреса объект GeoIP требует библиотеку GeoIP C и наборы данных GeoIP Country или City в двоичном формате (файлы CSV не подойдут!). Эти наборы данных можно скачать у MaxMind. Скачайте файлы GeoLiteCountry/GeoIP.dat.gz и GeoLiteCity.dat.gz и распакуйте их в директорию, соответствующую тому, что вы установили для GEOIP_PATH в ваших настройках. Более подробные сведения см. в примере и справке ниже.

Пример

Предполагая, что у вас установлена библиотека GeoIP C, вот пример ее использования:

>>> from django.contrib.gis.geoip import GeoIP
>>> g = GeoIP()
>>> g.country('google.com')
{'country_code': 'US', 'country_name': 'United States'}
>>> g.city('72.14.207.99')
{'area_code': 650,
'city': 'Mountain View',
'country_code': 'US',
'country_code3': 'USA',
'country_name': 'United States',
'dma_code': 807,
'latitude': 37.419200897216797,
'longitude': -122.05740356445312,
'postal_code': '94043',
'region': 'CA'}
>>> g.lat_lon('salon.com')
(37.789798736572266, -122.39420318603516)
>>> g.lon_lat('uh.edu')
(-95.415199279785156, 29.77549934387207)
>>> g.geos('24.124.1.80').wkt
'POINT (-95.2087020874023438 39.0392990112304688)'

GeoIP Настройки

GEOIP_PATH

Строка, указывающая директорию, где находятся файлы данных GeoIP. Эта настройка обязательна, если не указана явно с ключевым словом path при инициализации объекта GeoIP.

GEOIP_LIBRARY_PATH

Строка, указывающая расположение библиотеки GeoIP C. Обычно эта настройка используется только в случае, если библиотека GeoIP C расположена в нестандартном месте (например, /home/sue/lib/libGeoIP.so).

GEOIP_COUNTRY

Базовое имя, используемое для файла данных GeoIP для страны. По умолчанию 'GeoIP.dat'.

GEOIP_CITY

Базовое имя, используемое для файла данных GeoIP для города. По умолчанию 'GeoLiteCity.dat'.

GeoIP API

class GeoIP(path=None, cache=0, country=None, city=None) [source]

Объект GeoIP не требует параметров для использования значений по умолчанию. Однако, по меньшей мере, необходимо установить настройку GEOIP_PATH с путем к вашему набору данных GeoIP.

Следующие ключевые слова инициализации могут использоваться для настройки значений по умолчанию.

Ключевые аргументы Описание
path Базовая директория, где находятся данные GeoIP, или полный путь к файлам данных города или страны (.dat). Предполагается, что оба набора данных (город и страна) находятся в этой директории; переопределяет атрибут настроек GEOIP_PATH.
cache Настройки кэша при открытии наборов данных GeoIP, и может быть целым числом из (0, 1, 2, 4), соответствующим GEOIP_STANDARD, GEOIP_MEMORY_CACHE, GEOIP_CHECK_CACHE, и GEOIP_INDEX_CACHE настройкам API C, соответственно. По умолчанию 0 (GEOIP_STANDARD).
country Имя файла данных GeoIP для страны. По умолчанию GeoIP.dat. Установка этого ключевого слова переопределяет атрибут настроек GEOIP_COUNTRY.
city Имя файла данных GeoIP для города. По умолчанию GeoLiteCity.dat. Установка этого ключевого слова переопределяет атрибут настроек GEOIP_CITY.

GeoIP Методы

Запросы

Все следующие запросы могут принимать строковый IP-адрес или полное доменное имя (FQDN). Например, как '205.186.163.125' и 'djangoproject.com' будут допустимыми параметрами запроса.

GeoIP.city(query) [source]

Возвращает словарь информации о городе для заданного запроса. Некоторые значения в словаре могут быть неопределенными (None).

GeoIP.country(query) [source]

Возвращает словарь с кодом страны и названием страны для заданного запроса.

GeoIP.country_code(query) [source]

Возвращает только код страны, соответствующий запросу.

GeoIP.country_name(query) [source]

Возвращает только название страны, соответствующее запросу.

Получение координат

GeoIP.coords(query) [source]

Возвращает кортеж координат (долгота, широта).

GeoIP.lon_lat(query) [source]

Возвращает кортеж координат (долгота, широта).

GeoIP.lat_lon(query) [source]

Возвращает кортеж координат (широта, долгота).

GeoIP.geos(query) [source]

Возвращает объект django.contrib.gis.geos.Point, соответствующий запросу.

Информация о базе данных

GeoIP.country_info

Этот свойство возвращает информацию о базе данных GeoIP для страны.

GeoIP.city_info

Этот свойство возвращает информацию о базе данных GeoIP для города.

GeoIP.info

Этот свойство возвращает информацию обо всех базах данных GeoIP (город и страна), а также версию библиотеки GeoIP C (если поддерживается).

Методы совместимости с GeoIP-Python API

Эти методы существуют для облегчения совместимости с любым кодом, использующим существующий Python API MaxMind.

classmethod GeoIP.open(path, cache) [source]

Этот метод класса создает объект GeoIP из заданного пути к базе данных и заданных настроек кэша.

GeoIP.region_by_addr(query)
GeoIP.region_by_name(query)
GeoIP.record_by_addr(query)
GeoIP.record_by_name(query)
GeoIP.country_code_by_addr(query)
GeoIP.country_code_by_name(query)
GeoIP.country_name_by_addr(query)
GeoIP.country_name_by_name(query)

Примечания

[1] GeoIP(R) — зарегистрированная торговая марка MaxMind, LLC из Бостона, штат Массачусетс.

© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/1.9/ref/contrib/gis/geoip/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API