使用 GeoIP2 进行地理定位¶
GeoIP2
对象是 MaxMind geoip2 Python 库 的包装器。 [1]
为了执行基于 IP 的地理定位,GeoIP2
对象需要 geoip2 Python 包和二进制格式的 GeoIP Country
和/或 City
数据集(CSV 文件不起作用!),从例如 MaxMind 或 DB-IP 网站下载。获取 GeoLite2-Country.mmdb.gz
和 GeoLite2-City.mmdb.gz
文件,并将其解压缩到与 GEOIP_PATH
设置对应的目录中。
此外,建议安装 libmaxminddb C 库,以便 geoip2
可以利用 C 库更快的速度。
在 Django 4.2 中更改
添加了对从 DB-IP 下载的 .mmdb
文件的支持。
示例¶
以下是其用法示例
>>> 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 参考¶
-
类
GeoIP2
(path=无, cache=0, country=无, city=无)¶
GeoIP
对象不需要任何参数来使用默认设置。但是,至少应将 GEOIP_PATH
设置为 GeoIP 数据集所在位置的路径。可以使用以下初始化关键字来自定义任何默认值。
关键字参数 | 说明 |
---|---|
path |
GeoIP 数据所在的基目录或城市或国家数据文件 (.mmdb ) 的完整路径。假设城市和国家数据集都位于此目录中;覆盖 GEOIP_PATH 设置。 |
cache |
打开 GeoIP 数据集时的缓存设置。可以是 (0, 1, 2, 4, 8) 中的整数,分别对应于 MODE_AUTO 、MODE_MMAP_EXT 、MODE_MMAP 和 GEOIP_INDEX_CACHE MODE_MEMORY C API 设置。默认为 0 (MODE_AUTO )。 |
country |
GeoIP 国家数据文件的名称。默认为 GeoLite2-Country.mmdb 。设置此关键字将覆盖 GEOIP_COUNTRY 设置。 |
城市 |
GeoIP 城市数据文件的名称。默认为 GeoLite2-City.mmdb 。设置此关键字将覆盖 GEOIP_CITY 设置。 |