Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用django GeoIP和MaxMind数据库_Python_Django_Geoip_Maxmind - Fatal编程技术网

Python 使用django GeoIP和MaxMind数据库

Python 使用django GeoIP和MaxMind数据库,python,django,geoip,maxmind,Python,Django,Geoip,Maxmind,我试图在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') 返

我试图在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\u name':无,'country':无}

我错过了什么?maxmind数据库是否只覆盖流行站点,因此如果我想确定连接的来源,就不能使用


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

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

您的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