Spec-Zone.ru › Django 6.0

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

Обзор

Объект GeoIP2 представляет собой обёртку для библиотеки Python MaxMind geoip2. [1]

Для выполнения геолокации по IP-адресу объект GeoIP2 требует пакет Python geoip2 и наборы данных GeoIP Country и/или City в двоичном формате (файлы CSV не подойдут!), загруженные, например, с сайтов MaxMind или DB-IP. Скачайте файлы GeoLite2-Country.mmdb.gz и GeoLite2-City.mmdb.gz и распакуйте их в каталог, указанный в настройке GEOIP_PATH.

Кроме того, рекомендуется установить библиотеку C libmaxminddb, чтобы geoip2 могла использовать более высокую скорость библиотеки C.

Пример

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

>>> from django.contrib.gis.geoip2 import GeoIP2
>>> g = GeoIP2()
>>> g.country("google.com")
{'continent_code': 'NA',
 'continent_name': 'North America',
 'country_code': 'US',
 'country_name': 'United States',
 'is_in_european_union': False}
>>> g.city("72.14.207.99")
{'accuracy_radius': 1000,
 'city': 'Mountain View',
 'continent_code': 'NA',
 'continent_name': 'North America',
 'country_code': 'US',
 'country_name': 'United States',
 'is_in_european_union': False,
 'latitude': 37.419200897216797,
 'longitude': -122.05740356445312,
 'metro_code': 807,
 'postal_code': '94043',
 'region_code': 'CA',
 'region_name': 'California',
 'time_zone': 'America/Los_Angeles',
 'dma_code': 807,
 'region': 'CA'}
>>> g.lat_lon("salon.com")
(39.0437, -77.4875)
>>> g.lon_lat("uh.edu")
(-95.4342, 29.834)
>>> g.geos("24.124.1.80").wkt
'POINT (-97 38)'

Справочник API

class GeoIP2(path=None, cache=0, country=None, city=None) [исходный код]

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

Ключевые аргументы

Описание

path

Базовый каталог, в котором находятся данные GeoIP, или полный путь к файлам данных о городе или стране (.mmdb). Предполагается, что наборы данных о городах и странах находятся в этом каталоге; переопределяет настройку GEOIP_PATH.

cache

Настройки кэширования при открытии наборов данных GeoIP. Может быть целым числом из (0, 1, 2, 4, 8), соответствующим настройкам API C MODE_AUTO, MODE_MMAP_EXT, MODE_MMAP и GEOIP_INDEX_CACHE MODE_MEMORY соответственно. По умолчанию — 0 (MODE_AUTO).

country

Имя файла данных GeoIP о странах. По умолчанию — GeoLite2-Country.mmdb. Указание этого ключевого аргумента переопределяет настройку GEOIP_COUNTRY.

city

Имя файла данных GeoIP о городах. По умолчанию — GeoLite2-City.mmdb. Указание этого ключевого аргумента переопределяет настройку GEOIP_CITY.

Методы

Запросы

Все перечисленные ниже методы запросов могут принимать экземпляр IPv4Address или IPv6Address, строку с IP-адресом или полностью определённое доменное имя (FQDN). Например, IPv4Address("205.186.163.125"), "205.186.163.125" и "djangoproject.com" — допустимые параметры запроса.

GeoIP2.city(query) [исходный код]

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

GeoIP2.country(query) [исходный код]

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

GeoIP2.country_code(query) [исходный код]

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

GeoIP2.country_name(query) [исходный код]

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

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

GeoIP2.lon_lat(query) [исходный код]

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

GeoIP2.lat_lon(query) [исходный код]

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

GeoIP2.geos(query) [исходный код]

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

Настройки

GEOIP_PATH

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

GEOIP_COUNTRY

Базовое имя файла данных GeoIP о странах. По умолчанию — 'GeoLite2-Country.mmdb'.

GEOIP_CITY

Базовое имя файла данных GeoIP о городах. По умолчанию — 'GeoLite2-City.mmdb'.

Исключения

exception GeoIP2Exception [исходный код]

Исключение, возникающее при ошибке в обёртке GeoIP2. Исключения базовой библиотеки geoip2 передаются без изменений.

Сноски

[1]

GeoIP(R) является зарегистрированным товарным знаком MaxMind, Inc.

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

Spec-Zone.ru

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