GeoIP对象是MaxMind GeoIP C API的ctypes包装器。[1]
为了执行基于IP的地理位置,GeoIP对象需要使用二进制格式的GeoIP C库和GeoIP 国家/地区或城市数据集CSV文件将不工作!)。这些数据集可以从MaxMind下载。抓取GeoLiteCountry/GeoIP.dat.gz和GeoLiteCity.dat.gz文件,并将其解压缩到与您设置的GEOIP_PATH对应的目录中在您的设置。有关更多详细信息,请参阅下面的示例和参考。
假设您安装了GeoIP C库,以下是其使用示例:
>>> from django.contrib.gis.geoip import GeoIP
>>> g = GeoIP()
>>> g.country('google.com')
{'country_code': 'US', 'country_name': 'United States'}
>>> g.city('72.14.207.99')
{'area_code': 650,
'city': 'Mountain View',
'country_code': 'US',
'country_code3': 'USA',
'country_name': 'United States',
'dma_code': 807,
'latitude': 37.419200897216797,
'longitude': -122.05740356445312,
'postal_code': '94043',
'region': 'CA'}
>>> g.lat_lon('salon.com')
(37.789798736572266, -122.39420318603516)
>>> g.lon_lat('uh.edu')
(-95.415199279785156, 29.77549934387207)
>>> g.geos('24.124.1.80').wkt
'POINT (-95.2087020874023438 39.0392990112304688)'
指定GeoIP C库位置的字符串。通常,仅当GeoIP C库位于非标准位置(例如,/home/sue/lib/libGeoIP.so)时,才会使用此设置。
用于GeoIP国家/地区数据文件的基本名称。默认为'GeoIP.dat'。
用于GeoIP城市数据文件的基本名称。默认为'GeoLiteCity.dat'。
GeoIP对象不需要任何参数即可使用默认设置。但是,至少应该使用GeoIP数据集的位置路径设置GEOIP_PATH设置。以下初始化关键字可用于自定义任何默认值。
关键字参数 | 描述 |
---|---|
path | 基本目录到GeoIP数据所在的位置或城市或国家/地区数据文件(.dat)所在的完整路径。假设城市和国家数据集都位于此目录中;覆盖GEOIP_PATH设置属性。 |
cache | 打开GeoIP数据集时的缓存设置,并且可以是与GEOIP_STANDARD,GEOIP_MEMORY_CACHE,GEOIP_CHECK_CACHE和GEOIP_INDEX_CACHE GeoIPOptions C API设置。默认为0(GEOIP_STANDARD)。 |
country | GeoIP国家/地区数据文件的名称。默认为GeoIP.dat。设置此关键字将覆盖GEOIP_COUNTRY设置属性。 |
city | GeoIP城市数据文件的名称。默认为GeoLiteCity.dat。设置此关键字将覆盖GEOIP_CITY设置属性。 |
所有以下查询例程可以采用字符串IP地址或完全限定域名(FQDN)。例如,'205.186.163.125'和'djangoproject.com'都将是有效的查询参数。
返回给定查询的城市信息字典。字典中的一些值可能未定义(None)。
返回具有给定查询的国家/地区代码和国家/地区的字典。
仅返回与查询对应的国家/地区代码。
仅返回与查询对应的国家/地区名称。
返回一个(经度,纬度)的坐标元组。
返回一个(经度,纬度)的坐标元组。
返回(纬度,经度)的坐标元组,
返回与查询对应的django.contrib.gis.geos.Point对象。
此属性返回有关GeoIP国家/地区数据库的信息。
此属性返回有关GeoIP城市数据库的信息。
此属性返回有关所有GeoIP数据库(城市和国家/地区)以及GeoIP C库版本(如果支持)的信息。
这些方法的存在,以简化与使用MaxMind的现有Python API的任何代码的兼容性。
此类方法从给定的数据库路径和给定的缓存设置实例化GeoIP对象。
脚注
[1] | GeoIP是马萨诸塞州波士顿的MaxMind有限责任公司的注册商标。 |
2015年5月13日