Геолокация с GeoIP2
Объект GeoIP2 является оболочкой для библиотеки MaxMind geoip2 Python. [1]
Для выполнения геолокации на основе IP-адреса объекту GeoIP2 требуется пакет Python geoip2 и наборы данных GeoIP Country и/или City в двоичном формате (файлы CSV не подойдут!), загруженные, например, с сайтов MaxMind или DB-IP. Скопируйте файлы GeoLite2-Country.mmdb.gz и GeoLite2-City.mmdb.gz и распакуйте их в директории, соответствующей настройке GEOIP_PATH.
Кроме того, рекомендуется установить библиотеку libmaxminddb C, чтобы 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)[source]
Объект GeoIP не требует никаких параметров для использования по умолчанию. Однако, по меньшей мере, необходимо установить настройку GEOIP_PATH с путем расположения наборов данных GeoIP. Следующие ключевые слова инициализации могут использоваться для настройки любых значений по умолчанию.
Ключевые аргументы | Описание |
|---|---|
| Базовая директория, где расположены данные GeoIP, или полный путь к файлам данных города или страны ( |
| Настройки кэша при открытии наборов данных GeoIP. Может быть целым числом из (0, 1, 2, 4, 8), соответствующим настройкам |
| Имя файла данных GeoIP для страны. По умолчанию |
| Имя файла данных GeoIP для города. По умолчанию |
Методы
Инициализация
-
classmethod GeoIP2.open(path, cache)[source]
Этот метод класса инициализирует объект GeoIP из заданного пути к базе данных и заданных настроек кэша.
Устарело начиная с версии 5.1: Используйте конструктор GeoIP2() вместо него.
Запросы
Все следующие запросы могут принимать экземпляр IPv4Address или IPv6Address, строковый IP-адрес или полностью квалифицированное доменное имя (FQDN). Например, IPv4Address("205.186.163.125"), "205.186.163.125" и "djangoproject.com" — все являются допустимыми параметрами запроса.
-
GeoIP2.city(query)[source]
Возвращает словарь с информацией о городе для заданного запроса. Некоторые значения в словаре могут быть неопределёнными (None).
-
GeoIP2.country(query)[source]
Возвращает словарь с кодом страны и названием страны для заданного запроса.
-
GeoIP2.country_code(query)[source]
Возвращает код страны, соответствующий запросу.
-
GeoIP2.country_name(query)[source]
Возвращает название страны, соответствующее запросу.
Получение координат
-
GeoIP2.coords(query)[source]
Возвращает кортеж координат (долгота, широта).
Устарело начиная с версии 5.1: Используйте GeoIP2.lon_lat() вместо него.
-
GeoIP2.lon_lat(query)[source]
Возвращает кортеж координат (долгота, широта).
-
GeoIP2.lat_lon(query)[source]
Возвращает кортеж координат (широта, долгота).
-
GeoIP2.geos(query)[source]
Возвращает объект Point, соответствующий запросу.
Настройки
GEOIP_PATH
Строка или pathlib.Path, указывающая директорию, где находятся файлы данных GeoIP. Эта настройка обязательна, если не указана вручную с помощью ключевого слова path при инициализации объекта GeoIP2.
GEOIP_COUNTRY
Базовое имя для файла данных GeoIP для страны. По умолчанию 'GeoLite2-Country.mmdb'.
GEOIP_CITY
Базовое имя для файла данных GeoIP для города. По умолчанию 'GeoLite2-City.mmdb'.
Исключения
-
exception GeoIP2Exception[source] -
Исключение, которое возникает при возникновении ошибки в оболочке
GeoIP2. Исключение из базовой библиотекиgeoip2передается без изменений.
Примечания
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/5.2/ref/contrib/gis/geoip2/