GeoIP2 的地理位置¶

GeoIP2对象是MaxMind geoip2 Python库的包装器。 [1] T0>

为了执行基于IP的地理定位,GeoIP2对象需要geoip2 Python库和GeoIP Country和/或City 二进制格式的数据集(CSV文件不起作用)。 抓取GeoLite2-Country.mmdb.gzGeoLite2-City.mmdb.gz文件,并将其解压缩到与GEOIP_PATH设置相对应的目录中。

另外,建议安装libmaxminddb C库,以便geoip2可以利用C库的速度更快。

实施例¶ T0>

以下是其使用示例:

>>> 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',
'country_code': 'US',
'country_name': 'United States',
'dma_code': 807,
'latitude': 37.419200897216797,
'longitude': -122.05740356445312,
'postal_code': '94043',
'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参考

GeoIP2path = Nonecache = 0country = Nonecity = T4>)¶ T5>

GeoIP对象不需要任何参数来使用默认设置。 但是,至少应该使用您的GeoIP数据集的位置路径设置GEOIP_PATH设置。 可以使用以下初始化关键字来自定义任何默认值。

关键字参数 描述
路径 GeoIP数据所在的基本目录或城市或国家/地区数据文件(.mmdb)所在的完整路径。 假设城市和国家数据集都位于此目录中;覆盖GEOIP_PATH设置。
高速缓存 打开GeoIP数据集时的缓存设置。 可以是对应于MODE_AUTOMODE_MMAP_EXTMODE_MMAPGEOIP_INDEX_CACHE MODE_MEMORY C API设置。 默认为0(MODE_AUTO)。
国家 GeoIP国家/地区数据文件的名称。 默认为GeoLite2-Country.mmdb 设置此关键字将覆盖GEOIP_COUNTRY设置。
GeoIP城市数据文件的名称。 默认为GeoLite2-City.mmdb 设置此关键字将覆盖GEOIP_CITY设置。

方法¶ T0>

实例¶ T0>

类方法 GeoIP2。打开路径缓存

该类方法从给定的数据库路径实例化GeoIP对象并给出缓存设置。

查询¶ T0>

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

GeoIP2。城市 T0>(查询 T1>)¶ T2>

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

GeoIP2。国家 T0>(查询 T1>)¶ T2>

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

GeoIP2。 COUNTRY_CODE T0>(查询 T1>)¶ T2>

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

GeoIP2。 COUNTRY_NAME T0>(查询 T1>)¶ T2>

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

坐标检索

GeoIP2。 COORDS T0>(查询 T1>)¶ T2>

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

GeoIP2。 lon_lat T0>(查询 T1>)¶ T2>

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

GeoIP2。 lat_lon T0>(查询 T1>)¶ T2>

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

GeoIP2。 GEOS T0>(查询 T1>)¶ T2>

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

设置¶ T0>

GEOIP_PATH

指定GeoIP数据文件所在目录的字符串。 此设置为需要,除非在初始化GeoIP2对象时手动指定path关键字。

GEOIP_COUNTRY

用于GeoIP国家/地区数据文件的基本名称。 默认为'GeoLite2-Country.mmdb'

GEOIP_CITY

用于GeoIP城市数据文件的基本名称。 默认为'GeoLite2-City.mmdb'

例外¶ T0>

例外 GeoIP2Exception T0> ¶ T1>

在调用底层geoip2库时发生错误时引发异常。

脚注

[1]GeoIP(R)是MaxMind,Inc.的注册商标