Геолокация с GeoIP
Объект 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 GeoIPOptions настроек C API, соответственно. По умолчанию 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.8/ref/contrib/gis/geoip/