Django,检索IP位置

Hel*_*nar 24 django geolocation

我想通过从他们的IP地址检测他们的位置,将我的用户重定向到我网站中的特定位置区域.

在Django 1.1.1下实现这一目标的最佳方法是什么?

谢谢

编辑:我想在欧洲以城市为基础的定位.

Nic*_*sta 33

GeoDjango看起来很适合您的需求.我不确定您希望如何引导用户,但使用GeoIP API,您可以执行以下操作:

from django.contrib.gis.utils import GeoIP
g = GeoIP()
ip = request.META.get('REMOTE_ADDR', None)
if ip:
    city = g.city(ip)['city']
else:
    city = 'Rome' # default city

# proceed with city
Run Code Online (Sandbox Code Playgroud)

文件解释的很详细的东西; 我会花一点时间仔细阅读它们.

  • 自Django 1.9以来,这已被弃用.改用GeoIP2(https://docs.djangoproject.com/en/1.10/ref/contrib/gis/geoip2/) (4认同)
  • 仍然是 2015 年 Geoip 追踪的最佳选择吗? (2认同)

Tom*_*ski 25

已经提到过GeoIP,但是如果你想将它嵌入到你的应用程序中而不是安装在Python的站点包中,我发现pygeoip安装起来不那么麻烦.尽管如此,它仍适用于免费的MaxMind数据库,例如GeoLite City one.

使用示例(与GeoIP几乎相同):

>>> import pygeoip
>>> gi = pygeoip.GeoIP(GEOIP_DATABASE, pygeoip.GEOIP_STANDARD)
>>> gi.record_by_addr(ip)
{'country': '...', 'country_code': '...', ...}
Run Code Online (Sandbox Code Playgroud)

  • 看起来像pygeoip正在转向github:https://github.com/appliedsec/pygeoip (2认同)