使用 geoip2 查找时区

Using geoip2 for timezone look up

django.contrib.gis.geoip2 框架公开了高级地理定位 api。我想用它来查找用户时区,但查询没有 return 时区,尽管 maxmind documetion 说他们的数据库包括它们。我是不是遗漏了什么或如何做到这一点?

看来 time_zone 是 MaxMind GeoIP2 API.

geoip2.records.Location class 上的一个字段

在 Django 包装器上,响应被定义 here,并且不会一起转发 time_zone 字段。

您可以在包装器中添加一行:

    'time_zone': response.location.time_zone,

我相信他们会很感激拉取请求。 :)

下面的 class 覆盖 GeoIP2 class 以公开时区信息。可能有用,直到/如果它被添加到基础中 class(如果没有人先得到它,将尽快为它提高 PR)

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