Geolokalisering med GeoIP2¶
Objektet GeoIP2
är ett omslag för :pypi:``MaxMind geoip2 Python-biblioteket <geoip2>`. [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¶
Denna klassmetod instansierar GeoIP-objektet från den angivna databassökvägen och den angivna cacheminställningen.
Ersatt sedan 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¶
Returnerar en koordinattupel av (longitud, latitud).
Ersatt sedan 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
GeoIP2
wrapper. Undantag från det underliggandegeoip2
-biblioteket skickas vidare oförändrade.
Fotnoter