使用geoip2进行地理定位

这个 GeoIP2 对象是 `MaxMind geoip2 Python library`_ _. [1]

为了执行基于IP的地理位置, GeoIP2 对象需要使用 geoip2 Python包和GeoIP Country and/or City datasets in binary format (the CSV files will not work!), downloaded from e.g. `MaxMind`__`DB-IP`__ 网站。抓起 GeoLite2-Country.mmdb.gzGeoLite2-City.mmdb.gz 文件并将其解压缩到与 GEOIP_PATH 布景。

此外,建议安装 `libmaxminddb C library`_ 所以 geoip2 可以利用C库的更快速度。

例子

下面是它的用法示例:

>>> from django.contrib.gis.geoip2 import GeoIP2
>>> g = GeoIP2()
>>> g.country("google.com")
{'country_code': 'US', 'country_name': 'United States'}
>>> g.city("72.14.207.99")
{'city': 'Mountain View',
'continent_code': 'NA',
'continent_name': 'North America',
'country_code': 'US',
'country_name': 'United States',
'dma_code': 807,
'is_in_european_union': False,
'latitude': 37.419200897216797,
'longitude': -122.05740356445312,
'postal_code': '94043',
'region': 'CA',
'time_zone': 'America/Los_Angeles'}
>>> 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 应使用地理IP数据集位置的路径设置设置设置。以下初始化关键字可用于自定义任何默认值。

关键字参数

描述

path

geoip数据所在的基本目录或城市或国家数据文件所在的完整路径 (.mmdb 位于。假定城市和国家数据集都位于此目录中;重写 GEOIP_PATH 设置。

cache

打开geoip数据集时的缓存设置。可以是(0,1,2,4,8)中对应于 MODE_AUTOMODE_MMAP_EXTMODE_MMAPGEOIP_INDEX_CACHE MODE_MEMORY C API设置。默认值为0 (MODE_AUTO

country

geoip国家数据文件的名称。默认为 GeoLite2-Country.mmdb . 设置此关键字将重写 GEOIP_COUNTRY 设置。

city

geoip城市数据文件的名称。默认为 GeoLite2-City.mmdb . 设置此关键字将重写 GEOIP_CITY 设置。

方法

例示

classmethod GeoIP2.open(path, cache)[源代码]

这个类方法从给定的数据库路径和给定的缓存设置实例化geoip对象。

自 5.1 版本弃用: 使用 GeoIP2() 而是使用构造函数。

查询

以下所有查询例程都可以采用字符串IP地址或完全限定的域名(fqdn)。例如,两者 '205.186.163.125''djangoproject.com' 将是有效的查询参数。

GeoIP2.city(query)[源代码]

返回给定查询的城市信息字典。字典中的某些值可能未定义 (None

GeoIP2.country(query)[源代码]

返回具有给定查询的国家/地区代码和国家/地区的字典。

GeoIP2.country_code(query)[源代码]

返回与查询对应的国家/地区代码。

GeoIP2.country_name(query)[源代码]

返回与查询对应的国家/地区名称。

坐标检索

GeoIP2.coords(query)[源代码]

返回(经度、纬度)的坐标元组。

自 5.1 版本弃用: 使用 GeoIP2.lon_lat() 取而代之的是。

GeoIP2.lon_lat(query)[源代码]

返回(经度、纬度)的坐标元组。

GeoIP2.lat_lon(query)[源代码]

返回(纬度、经度)的坐标元组,

GeoIP2.geos(query)[源代码]

返回A Point 与查询对应的对象。

设置

GEOIP_PATH

一根绳子或 pathlib.Path 指定GeoIP数据文件所在的目录。此设置为 必修的 除非手动指定 path 初始化时使用关键字 GeoIP2 对象。

GEOIP_COUNTRY

用于geoip国家数据文件的基名称。默认为 'GeoLite2-Country.mmdb' .

GEOIP_CITY

用于geoip city数据文件的基名称。默认为 'GeoLite2-City.mmdb' .

例外情况

exception GeoIP2Exception[源代码]

对基础调用中发生错误时引发的异常 geoip2 类库。

脚注