在Django中为GeoIP2创建项目设置

时间:2016-01-30 15:43:00

标签: python django geolocation django-contrib

我正在尝试使用GeoIP2 for Django,它要求您在function a() { var a = 3; // using var makes "a" local, and does not override your global a() return a; } console.log(a()); // 3 console.log(a()); // 3 设置中设置国家和城市数据集的路径。我的问题是我不知道我应该把这个设置放在哪里,以便像Python shell这样的东西可以看到它。

我认为它会进入GEOIP_PATH,但我不确定这个特定模块的语法,而Django文档对此绝对是垃圾。

2 个答案:

答案 0 :(得分:5)

你应该把它放在Django的settings.py文件里面。您应该能够在Django项目/应用程序中的某处找到此文件。然后将以下内容放在该文件中:

GEOIP_PATH = '/path/to/your/geoip/datafiles'
然后,GEOIP将能够找到它在应用程序中使用所需的文件。

修改

<小时/> 如果你想通过python shell尝试使用GeoIP2 for Django,你必须遵循以下步骤(请注意我使用的是Windows的答案,但对于基于Linux的操作系统应该是相同的):

注意:如果您已经设置了Django项目,则可以从步骤10开始。

  1. 确保安装了Python(我正在使用Python 3.5.1来解答这个问题),包括pip

  2. 安装virtualenvwrapper:pip install virtualenvwrapper-win(或pip install virtualenvwrapper用于非Windows安装)

  3. 为您的项目创建虚拟环境:mkvirtualenv GeoIP

  4. 为此项目安装Django:pip install django

  5. 要检查安装是否成功执行django-admin --version,这应该会显示Django安装的版本,对我来说是1.9.1。如果您没有看到这一点,请确保您的python安装正确。

  6. 创建一个希望保存项目的目录。在我的例子中,我创建了一个名为Django的目录:mkdir Django

  7. 转到此目录:cd Django

  8. 创建Django项目:django-admin startproject geoip_test

  9. 转到Django为您创建的新目录:cd geoip_test

  10. 安装geoip2:pip install geoip2

  11. 创建一个目录来存储required datasets。请注意,这些必须解压缩:mkdir geoip。将您下载并解压缩的文件放在此目录中。

  12. 启动Django Python shell:python manage.py shell

  13. 导入GeoIP2:>>> from django.contrib.gis.geoip2 import GeoIP2

  14. 通过实例化一个带有您下载文件位置路径的类来创建GeoIP2对象:>>> g = GeoIP2('geoip')

  15. 测试一切正常:>>> g.country('google.com')
    {'country_code': 'US', 'country_name': 'United States'}

答案 1 :(得分:0)

我找到的简单步骤

  1. Pip安装geoip2
  2. geoip2注册
  3. 下载GeoIP2和GeoIP旧版数据库gzip文件, page should look like this
  4. 通过在控制台中运行tar -xzf zip_file_name.tar.gz将文件解压缩到Django项目文件夹的根目录中
  5. 在您的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