django - Django geoip2 + Maxmind 在本地工作,但不在生产中?
问题描述
我能够获取响应对象并将其呈现到本地页面,但在我的实时站点上它不起作用。
我正在使用 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_PATH
设置设置为包含GeoLite2-*.mmdb
文件的目录。可以在此处找到相关文档。
一旦*.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'}
推荐阅读
- javascript - 每个用户的游戏未定义,即使它不应该是
- raspberry-pi - 在 Raspberry Pi 2 上安装 Alpine Linux 与 root 密码斗争
- c# - 实体框架核心计算属性多表
- php - PHP 电子邮件提交
- javascript - 在网页中播放分成多个文件的音频
- c++ - 如何使用 c++ 在 code::blocks 中显示带有 "\033[1;90m" 之类的字符串的颜色?
- java - Netbeans 未检测到 JDK 安装
- powershell - 从 Windows 中的文本文件中删除特殊字符
- apache-camel - 骆驼客户端确认模式不起作用
- flutter - Flutter AnimatedSwitcher,图标未发生