【问题标题】:Using django GeoIP and MaxMind database使用 django GeoIP 和 MaxMind 数据库
【发布时间】:2015-10-17 15:32:07
【问题描述】:

我正在尝试在 Django 中设置 geoip 以识别连接源(为不同国家定制内容),但遇到了问题。

首先我执行:

from django.contrib.gis import geoip
geo = geoip.GeoIP('path to maxmind db')

然后geo.country('www.google.com') 如您所愿返回美国。其他流行的网站也可以正常工作。

但是,当我在自己的客户端 IP 上尝试时,我得到一个空记录。 例如:geo.country('127.6.89.129')

返回{'country_name': None, 'country': None}

我在这里缺少什么? maxmind 数据库是否仅涵盖热门站点,如果我想识别连接源,则无法使用?

我也在使用浏览器区域设置来识别语言,但不幸的是我需要地理位置来定制一些独立于语言的内容。

【问题讨论】:

    标签: python django geoip maxmind


    【解决方案1】:

    你的ip可以转发

    def foo(request):  
        g = GeoIP()
        country = g.country(get_client_ip(request))
        country_code = country['country_code']
    
    
    def get_client_ip(request):
        x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')
        if x_forwarded_for:
            ip = x_forwarded_for.split(',')[0]
        else:
            ip = request.META.get('REMOTE_ADDR')
        return ip
    

    【讨论】:

      【解决方案2】:

      您在示例中使用的 IP 地址是本地 IP 地址,您不能在网络外使用它,您是否尝试使用真正的公共 IP 地址?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-01
        • 1970-01-01
        • 2014-05-06
        • 2013-01-22
        • 2012-01-25
        • 2016-07-15
        相关资源
        最近更新 更多