Python 使用django GeoIP和MaxMind数据库
我试图在Django中设置geoip以识别连接的来源(为不同的国家定制内容),但遇到了问题 首先,我执行: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') 返
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