使用 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 函式庫更快的速度。
範例¶
以下是其使用範例
>>> from django.contrib.gis.geoip2 import GeoIP2
>>> g = GeoIP2()
>>> g.country("google.com")
{'continent_code': 'NA',
'continent_name': 'North America',
'country_code': 'US',
'country_name': 'United States',
'is_in_european_union': False}
>>> g.city("72.14.207.99")
{'accuracy_radius': 1000,
'city': 'Mountain View',
'continent_code': 'NA',
'continent_name': 'North America',
'country_code': 'US',
'country_name': 'United States',
'is_in_european_union': False,
'latitude': 37.419200897216797,
'longitude': -122.05740356445312,
'metro_code': 807,
'postal_code': '94043',
'region_code': 'CA',
'region_name': 'California',
'time_zone': 'America/Los_Angeles',
'dma_code': 807,
'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 參考¶
GeoIP
物件不需要任何參數即可使用預設設定。然而,至少應該使用 GeoIP 資料集所在位置的路徑來設定 GEOIP_PATH
設定。可以使用以下初始化關鍵字來自訂任何預設值。
關鍵字參數 |
說明 |
---|---|
|
GeoIP 資料所在的基礎目錄,或是城市或國家資料檔案 ( |
|
開啟 GeoIP 資料集時的快取設定。可以是 (0, 1, 2, 4, 8) 中的整數,對應於 |
|
GeoIP 國家資料檔案的名稱。預設值為 |
|
GeoIP 城市資料檔案的名稱。預設值為 |
方法¶
實例化¶
這個類別方法會從給定的資料庫路徑和給定的快取設定實例化 GeoIP 物件。
自 5.1 版起已棄用:請改用 GeoIP2()
建構函式。
查詢¶
以下所有查詢程式都可能接受 IPv4Address
或 IPv6Address
的實例、字串 IP 位址或完整合格域名 (FQDN)。例如,IPv4Address("205.186.163.125")
、"205.186.163.125"
和 "djangoproject.com"
都將是有效的查詢參數。
針對給定的查詢,傳回包含城市資訊的字典。字典中的某些值可能未定義 (None
)。
針對給定的查詢,傳回包含國家代碼和國家的字典。
傳回對應於查詢的國家代碼。
傳回對應於查詢的國家名稱。
座標擷取¶
傳回 (經度, 緯度) 的座標元組。
自 5.1 版起已棄用:請改用 GeoIP2.lon_lat()
。
傳回 (經度, 緯度) 的座標元組。
返回一個 (緯度, 經度) 的座標元組。
返回一個對應於查詢的 Point
物件。
設定¶
GEOIP_PATH
¶
一個字串或 pathlib.Path
,指定 GeoIP 資料檔所在的目錄。此設定是必要的,除非在初始化 GeoIP2
物件時,使用 path
關鍵字手動指定。
GEOIP_COUNTRY
¶
用於 GeoIP 國家資料檔的基本名稱。預設為 'GeoLite2-Country.mmdb'
。
GEOIP_CITY
¶
用於 GeoIP 城市資料檔的基本名稱。預設為 'GeoLite2-City.mmdb'
。
例外¶
註腳