我想玩玩Django的GeoIP2,它要求你在一个文件中设置国家和城市数据集的路径。GEOIP_PATH
设置。我的问题是,我不知道应该把这个设置放在哪里,以便像 Python shell 这样的东西能够看到它。
我想它应该放在 settings.py
但我不确定这个模块的语法,而且Django的文档在这方面是绝对的垃圾,我想玩玩Django的GeoIP2,它要求你在GEOIP_PATH中设置国家和城市数据集的路径。
你是对的,它应该放在 settings.py
文件,在Django中。你应该可以在你的Django项目app中找到这个文件。然后在该文件中放置以下内容。
GEOIP_PATH = '/path/to/your/geoip/datafiles'
GEOIP将能够找到它在应用程序中使用所需的文件。
请注意,我在这个答案中使用的是Windows系统,但在基于Linux的操作系统中应该是一样的: 如果你已经建立了一个Django项目,你可以从第10步开始。
确保你已经安装了Python (我在这个答案中使用Python 3.5.1),请注意以下几点。pip
.
安装 virtualenvwrapper。pip install virtualenvwrapper-win
(或 pip install virtualenvwrapper
对于非Windows系统的安装)。)
为你的项目建立一个虚拟环境。mkvirtualenv GeoIP
为这个项目安装Django pip install django
要检查安装是否成功,请执行 django-admin --version
,这应该会显示你的Django安装版本,即 1.9.1
对我来说是这样的。如果你没有看到这个,请确保你的python安装正确。
创建一个你想保存项目的目录。在我的例子中,我做了一个名为Django的目录。mkdir Django
移动到这个目录 cd Django
创建一个Django项目 django-admin startproject geoip_test
移动到Django为你创建的新目录下: cd geoip_test
安装geoip2 pip install geoip2
创建一个目录来存储 所需数据集. 请注意,这些都必须解压。mkdir geoip
. 将你下载并解压的文件放在这个目录下。
启动一个Django Python shell。python manage.py shell
导入GeoIP2 >>> from django.contrib.gis.geoip2 import GeoIP2
创建一个 GeoIP2
对象,实例化一个带有下载文件位置路径的类。>>> g = GeoIP2('geoip')
测试一切是否正常 >>> g.country('google.com')
{'country_code': 'US', 'country_name': 'United States'}
我发现的简单步骤
tar -xzf zip_file_name.tar.gz
在你的控制台views.py
无论你需要哪种应用,都可以像下面这样实现。.
from django.contrib.gis.geoip2 import GeoIP2
def index(request):
g = GeoIP2('GeoLite2-Country_20223519') #Enter folder name
country_code = g.country_code('15.194.1.177') #Enter IP address