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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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
Django geoip2+Maxmind是否在本地工作,但不在生产中?_Django_Python 3.x_Ubuntu 16.04_Geoip2 - Fatal编程技术网

Django geoip2+Maxmind是否在本地工作,但不在生产中?

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

我能够获取一个响应对象并在本地将其呈现到页面,但在我的实时站点上它不起作用

我使用的是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('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”编解码器无法对字符进行编码。。。