---
title: "Geolokasi dengan GeoIP2"
version: 4.2
locale: id
source: https://docs.djangoproject.com/id/4.2/ref/contrib/gis/geoip2/
canonical: https://djangodocs.dev/id/4.2/ref/contrib/gis/geoip2/
---
# Geolokasi dengan GeoIP2

Obyek  [`GeoIP2`](#django.contrib.gis.geoip2.GeoIP2) dibugnkus untuk [MaxMind geoip2 Python library](https://geoip2.readthedocs.io/). [^1]

In order to perform IP-based geolocation, the [`GeoIP2`](#django.contrib.gis.geoip2.GeoIP2) object requires
the [geoip2](https://pypi.org/project/geoip2/) Python package and the GeoIP `Country` and/or `City`
datasets in binary format (the CSV files will not work!), downloaded from e.g.
[MaxMind](https://dev.maxmind.com/geoip/geolite2-free-geolocation-data) or [DB-IP](https://db-ip.com/db/lite.php) websites. Grab the `GeoLite2-Country.mmdb.gz` and
`GeoLite2-City.mmdb.gz` files and unzip them in a directory corresponding to
the [`GEOIP_PATH`](#std-setting-GEOIP_PATH) setting.

Sebagai tambahan, sangat dianjurkan untuk memasang install [libmaxminddb C library](https://github.com/maxmind/libmaxminddb/), sehingga `geoip2` dapat mempengaruhi kecepatan tercepat pustaka C.

> **Changed in Django 4.2**
>
> Support for `.mmdb` files downloaded from DB-IP was added.

## Contoh

Here is an example of its usage:

```pycon
>>> from django.contrib.gis.geoip2 import GeoIP2
>>> g = GeoIP2()
>>> g.country("google.com")
{'country_code': 'US', 'country_name': 'United States'}
>>> g.city("72.14.207.99")
{'city': 'Mountain View',
'continent_code': 'NA',
'continent_name': 'North America',
'country_code': 'US',
'country_name': 'United States',
'dma_code': 807,
'is_in_european_union': False,
'latitude': 37.419200897216797,
'longitude': -122.05740356445312,
'postal_code': '94043',
'region': 'CA',
'time_zone': 'America/Los_Angeles'}
>>> 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)'
```

## Acuan API

#### `class GeoIP2(path=None, cache=0, country=None, city=None)`

Obyek `GeoIP` tidak membutuhkan parameter apapun untuk menggunakan pengaturan awalan. Bagaimanapun, pada pengaturan [`GEOIP_PATH`](#std-setting-GEOIP_PATH)  sangat sedikit harus disetel dengan jalur dari tempat dari kumpulan data GeoIP anda. Kata kunci inisialisasi berikut mungkin digunakan untuk menyesuaikan apapun dari awalan.

| Argumen Katakunci | Deskripsi |
| --- | --- |
| `path` | Direktori dasar dimana data GeoIP ditempatkan atau jalur penuh dimana berkas data kota atau negara (`.mmdb`) ditempatkan. Anggap dataset kedua kota dan negara ditempatkan dalam direktori ini; timpa pengaturan [`GEOIP_PATH`](#std-setting-GEOIP_PATH). |
| `cache` | Pengaturan cache ketika membuka dataset GeoIP. Mungkin berupa integer dalam (0, 1, 2, 4, 8) berhubungan ke pengaturan API C `MODE_AUTO`, `MODE_MMAP_EXT`, `MODE_MMAP`, dan `GEOIP_INDEX_CACHE` `MODE_MEMORY`, masing-masing. Awalan pada 0 (`MODE_AUTO`). |
| `country` | Nama dari berkas data negara GeoIP. Awalan pada `GeoLite2-Country.mmdb`. Mengatur kata kunci ini menimpa pengaturan [`GEOIP_COUNTRY`](#std-setting-GEOIP_COUNTRY). |
| `city` | Nama dari berkas data kota GeoIP. Awalan pada `GeoLite2-City.mmdb`. Mengatur kata kunci ini menimpa pengaturan [`GEOIP_CITY`](#std-setting-GEOIP_CITY). |

## Cara

### Instansiasi

#### `classmethod GeoIP2.open(path, cache)`

Metode kelas ini memberi contoh obyek GeoIP dari jalur basisdata diberikan dan pengaturan cache diberikan.

### Meminta

Semua permintaan rutin-rutin berikut mungkin mengambil slah satu sebuah string alamat IP atau fully qualified domain name (FQDN). Sebagai contoh, kedua `'205.186.163.125'` dan `'djangoproject.com'` akan berupa parameter permintaan sah.

#### `GeoIP2.city(query)`

Mengembalikan sebuah dictionary dari informasi kota untuk permintaan yang diberikan. Beberapa dari nilai dalam dictionary mungkin belum ditentukan (`None`).

#### `GeoIP2.country(query)`

Mengembalikan sebuah dictionary dengan kode negara dan negara untuk permintaan yang diberikan.

#### `GeoIP2.country_code(query)`

Mengembalikan kode negara terkait pada permintaan

#### `GeoIP2.country_name(query)`

Mengembalikan nama negara terkait pada permintaan

### Pengambilan Kordinat

#### `GeoIP2.coords(query)`

Mengembalikan sebuah tuple kordinat dari (longitude, latitude).

#### `GeoIP2.lon_lat(query)`

Mengembalikan sebuah tuple kordinat dari (longitude, latitude).

#### `GeoIP2.lat_lon(query)`

Mengembalikan sebuah tuple kordinat dari (latitude, longitude),

#### `GeoIP2.geos(query)`

Mengembalikan obyek [`Point`](/id/4.2/ref/contrib/gis/geos/#django.contrib.gis.geos.Point) terkait pada permintaan

## Pengaturan

### `GEOIP_PATH`

A string or [`pathlib.Path`](https://docs.python.org/3/library/pathlib.html#pathlib.Path) specifying the directory where the GeoIP data
files are located. This setting is *required* unless manually specified
with `path` keyword when initializing the [`GeoIP2`](#django.contrib.gis.geoip2.GeoIP2) object.

### `GEOIP_COUNTRY`

Namadasar untuk digunakan berkas data negara GeoIP. Nilai awal `'GeoLite2-Country.mmdb'`.

### `GEOIP_CITY`

Nama dasar digunakan untuk berkas data kota GeoIP. Awalan pada `'GeoLite2-City.mmdb'`.

## Pengecualian

#### `exception GeoIP2Exception`

Pengecualian dimunculkan ketika sebuah kesalahan muncul dalam panggilan pada pustaka `geoip2` pokok.

**Catatan kaki**

[^1]: GeoIP(R) adalah merek dagang terdaftar dari MaxMind, Inc.
