Geolokalisering med GeoIP2¶
Objektet GeoIP2 är ett omslag för MaxMind geoip2 Python-biblioteket. [1]
För att utföra IP-baserad geolokalisering kräver objektet GeoIP2 Python-paketet geoip2 och GeoIP-datauppsättningarna Country och/eller City i binärt format (CSV-filer fungerar inte!), som laddats ner från t.ex. webbplatserna MaxMind eller DB-IP. Hämta filerna GeoLite2-Country.mmdb.gz och GeoLite2-City.mmdb.gz och packa upp dem i en katalog som motsvarar inställningen GEOIP_PATH.
Dessutom rekommenderas det att installera C-biblioteket libmaxminddb, så att geoip2 kan utnyttja C-bibliotekets snabbare hastighet.
Exempel¶
Här är ett exempel på hur den används:
>>> 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-referens¶
Objektet GeoIP kräver inga parametrar för att använda standardinställningarna. Åtminstone bör dock inställningen GEOIP_PATH anges med sökvägen till platsen för dina GeoIP-datauppsättningar. Följande initialiseringsnyckelord kan användas för att anpassa något av standardvärdena.
Argument för nyckelord |
Beskrivning |
|---|---|
|
Baskatalog där GeoIP-data finns eller den fullständiga sökvägen till den plats där stads- eller landsdatafilerna ( |
|
Cache-inställningarna när GeoIP-dataseten öppnas. Kan vara ett heltal i (0, 1, 2, 4, 8) som motsvarar C API-inställningarna |
|
Namnet på GeoIP-landdatafilen. Standardvärdet är |
|
Namnet på GeoIP-datafilen för staden. Standardvärdet är |
Metoder¶
Instansiering¶
- classmethod GeoIP2.open(path, cache)¶
Denna klassmetod instansierar GeoIP-objektet från den angivna databassökvägen och den angivna cacheminställningen.
Deprecated since version 5.1: Använd istället GeoIP2()-konstruktören.
Frågeställning¶
Alla följande frågerutiner kan ta en instans av IPv4Address eller IPv6Address, en sträng IP-adress eller ett fullständigt kvalificerat domännamn (FQDN). Till exempel: skulle IPv4Address("205.186.163.125"), "205.186.163.125" och "djangoproject.com" alla vara giltiga frågeparametrar.
Returnerar en ordbok med stadsinformation för den angivna frågan. Vissa av värdena i ordlistan kan vara odefinierade (None).
Returnerar en ordbok med landskod och land för den angivna frågan.
Returnerar den landskod som motsvarar frågan.
Returnerar det landsnamn som motsvarar frågan.
Koordinera hämtning¶
- GeoIP2.coords(query)¶
Returnerar en koordinattupel av (longitud, latitud).
Deprecated since version 5.1: Använd GeoIP2.lon_lat() istället.
Returnerar en koordinattupel av (longitud, latitud).
Returnerar en koordinattupel av (latitud, longitud),
Returnerar ett Point-objekt som motsvarar frågan.
Inställningar¶
GEOIP_PATH¶
En sträng eller pathlib.Path som anger den katalog där GeoIP-datafilerna finns. Denna inställning är obligatorisk om den inte anges manuellt med nyckelordet path vid initiering av objektet GeoIP2.
GEOIP_COUNTRY¶
Det basnamn som ska användas för GeoIP-landdatafilen. Standardvärdet är 'GeoLite2-Country.mmdb'.
GEOIP_CITY¶
Det basnamn som ska användas för GeoIP-datafilen för staden. Standardvärdet är 'GeoLite2-City.mmdb'.
Undantag¶
- exception GeoIP2Exception[source]¶
Undantaget som uppstår när ett fel inträffar i
GeoIP2wrapper. Undantag från det underliggandegeoip2-biblioteket skickas vidare oförändrade.
Fotnoter