Geolocation with GeoIP

自1.9版以来已弃用 该模块已被弃用,支持django.contrib.gis.geoip2,它支持IPv6和GeoLite2数据库格式。

GeoIP对象是MaxMind GeoIP C API的ctypes包装器。 [1]

为了执行基于IP的地理位置,GeoIP对象需要使用二进制格式的GeoIP C库和GeoIP 国家/地区城市数据集CSV文件将不工作!)。 这些数据集可以从MaxMind下载 抓取GeoLiteCity.dat.gzGeoLiteCountry/GeoIP.dat.gz文件,并将其解压缩到与您设置的GEOIP_PATH对应的目录中在您的设置。 有关更多详细信息,请参阅下面的示例和参考。

Example

假设您安装了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 Settings

GEOIP_PATH

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

GEOIP_LIBRARY_PATH

指定GeoIP C库位置的字符串。 通常,仅当GeoIP C库位于非标准位置(例如,/home/sue/lib/libGeoIP.so)时,才会使用此设置。

GEOIP_COUNTRY

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

GEOIP_CITY

用于GeoIP城市数据文件的基本名称。 默认为'GeoLiteCity.dat'

GeoIP API

GeoIP(path=None, cache=0, country=None, city=None)[source]

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

关键字参数 描述
路径 基本目录到GeoIP数据所在的位置或城市或国家/地区数据文件(.dat)所在的完整路径。 假设城市和国家数据集都位于此目录中;覆盖GEOIP_PATH设置属性。
高速缓存 打开GeoIP数据集时的缓存设置,并且可以是与GEOIP_CHECK_CACHEGEOIP_MEMORY_CACHEGEOIP_STANDARDGEOIP_INDEX_CACHE GeoIPOptions C API设置。 默认为0(GEOIP_STANDARD)。
国家 GeoIP国家/地区数据文件的名称。 默认为GeoIP.dat 设置此关键字将覆盖GEOIP_COUNTRY设置属性。
GeoIP城市数据文件的名称。 默认为GeoLiteCity.dat 设置此关键字将覆盖GEOIP_CITY设置属性。

GeoIP Methods

Querying

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

GeoIP的。city(query)[source]

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

GeoIP的。country(query)[source]

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

GeoIP的。country_code(query)[source]

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

GeoIP的。country_name(query)[source]

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

Coordinate Retrieval

GeoIP的。coords(query)[source]

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

GeoIP的。lon_lat(query)[source]

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

GeoIP的。lat_lon(query)[source]

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

GeoIP的。geos(query)[source]

返回与查询对应的django.contrib.gis.geos.Point对象。

Database Information

GeoIP的。 country_info T0> ¶ T1>

此属性返回有关GeoIP国家/地区数据库的信息。

GeoIP的。 city_info T0> ¶ T1>

此属性返回有关GeoIP城市数据库的信息。

GeoIP的。信息 T0> ¶ T1>

此属性返回有关所有GeoIP数据库(城市和国家/地区)以及GeoIP C库版本(如果支持)的信息。

GeoIP-Python API compatibility methods

这些方法的存在,以简化与使用MaxMind的现有Python API的任何代码的兼容性。

类方法 GeoIP的。打开路径缓存[source]

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

GeoIP的。 region_by_addr T0>(查询 T1>)¶ T2>
GeoIP的。 region_by_name T0>(查询 T1>)¶ T2>
GeoIP的。 record_by_addr T0>(查询 T1>)¶ T2>
GeoIP的。 record_by_name T0>(查询 T1>)¶ T2>
GeoIP的。 country_code_by_addr T0>(查询 T1>)¶ T2>
GeoIP的。 country_code_by_name T0>(查询 T1>)¶ T2>
GeoIP的。 country_name_by_addr T0>(查询 T1>)¶ T2>
GeoIP的。 country_name_by_name T0>(查询 T1>)¶ T2>

脚注

[1]GeoIP是马萨诸塞州波士顿的MaxMind有限责任公司的注册商标。