2017-04-18 23 views
3

django.contrib.gis.geoip2框架暴露了高級別的地理位置api。我想用它來查找用戶時區,但查詢不返回時區,儘管maxmind documetion表示他們的數據庫包含它們。我是否錯過了一些東西,或者如何做到這一點?使用geoip2進行時區查找

回答

3

看起來time_zone是MaxMind GeoIP2 API中geoip2.records.Location類的字段。

在Django包裝上,響應被定義爲here,並且不轉發time_zone字段。

你可以添加一行是簡單的包裝:

'time_zone': response.location.time_zone, 

我敢肯定,他們會喜歡拉請求。 :)

+1

看起來像[公關是承諾和可用在Django 2.0(HTTPS ://github.com/django/django/pull/8373)。所以你可以調用'.city(ip)['time_zone']'。 –

1

下面的類超過了GeoIP2類來公開時區信息。可能是有用的,直到/如果它在基類的加入(會嘗試很快加公關的,如果沒有人得到它第一)

from django.contrib.gis.geoip2 import GeoIP2 


class GeoipWithTimezone(GeoIP2): 
    def timezone(self, query): 
     enc_query = self._check_query(query, city=True) 
     return self._city.city(enc_query).location.time_zone