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

时间:2019-09-10 18:37:06

标签: 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('REMOTE_ADDR', None)
location_lookup_response = reader.city(ip)
print(location_lookup_resonse)

但是,它在网站上不起作用。感谢您在这里的任何想法。

1 个答案:

答案 0 :(得分:1)

settings.py文件中,应将GEOIP_PATH设置到包含GeoLite2-*.mmdb文件的目录中。该can be found here的文档。

一旦*.mmdb文件位于GEOIP_PATH中,您应该可以使用django shell找到它们:

$ python manage.py shell
>>> from django.conf import settings
>>> print(settings.GEOIP_PATH)
'/path/to/geoip-mmdb-files'

>>> import os
>>> os.listdir(settings.GEOIP_PATH)
['GeoLite2-City.mmdb', 'GeoLite2-Country.mmdb']

>>> from django.contrib.gis.geoip2 import GeoIP2
>>> g = GeoIP2()
>>> g.country('google.com')
{'country_code': 'US', 'country_name': 'United States'}