Django geoip2+Maxmind是否在本地工作,但不在生产中?
我能够获取一个响应对象并在本地将其呈现到页面,但在我的实时站点上它不起作用 我使用的是Maxmind的二进制数据库,它是我项目文件夹中的GeoLite2-City.mmdb文件 这也适用于我的网站的Ubuntu 16.04终端:Django geoip2+Maxmind是否在本地工作,但不在生产中?,django,python-3.x,ubuntu-16.04,geoip2,Django,Python 3.x,Ubuntu 16.04,Geoip2,我能够获取一个响应对象并在本地将其呈现到页面,但在我的实时站点上它不起作用 我使用的是Maxmind的二进制数据库,它是我项目文件夹中的GeoLite2-City.mmdb文件 这也适用于我的网站的Ubuntu 16.04终端: import geoip2.database reader = geoip2.database.Reader('/home/jake/project-main/project/GeoLite2-City.mmdb') ip = request.META.get('REM
import geoip2.database
reader = geoip2.database.Reader('/home/jake/project-main/project/GeoLite2-City.mmdb')
ip = request.META.get('REMOTE_ADDR', None)
location_lookup_response = reader.city(ip)
print(location_lookup_resonse)
但是,它在网站上不起作用。非常感谢您的任何想法。在settings.py文件中,您应该将GEOIP_路径设置为包含GeoLite2-*.mmdb文件的目录。这方面的文件
一旦*.mmdb文件位于GEOIP_路径中,您应该能够使用django shell找到它们:
$python manage.py shell
>>>从django.conf导入设置
>>>printsettings.GEOIP_路径
“/path/to/geoip mmdb文件”
>>>导入操作系统
>>>os.listdirsettings.GEOIP_路径
['GeoLite2-City.mmdb','GeoLite2-Country.mmdb']
>>>从django.contrib.gis.geoip2导入geoip2
>>>g=GeoIP2
>>>g.country'google.com'
{'country_code':'US','country_name':'United'}
谢谢@damon。一旦我改用这种方法,它就奏效了。事实证明,这是因为回复对象中包含了中文字符,其中列出了地名的中文和其他非英文版本。”“ascii”编解码器无法对字符进行编码。。。