geoip数据作为一个应用程序,方便安装。还具有模板过滤器、实用程序功能和用于更新geoip数据的管理命令。
django-geoip-utils的Python项目详细描述
安装
pip install django-geoip-utils
在您的设置中写入:
import geoip_utils GEOIP_PATH = geoip_utils.where()
本产品包括maxmind创建的geolite数据,可从http://maxmind.com/
设置
geoip_request_ip_resolver
Default: | ^{tt1}$ |
---|
用于从请求获取客户端IP的函数。
Options: |
---|
'geoip_utils.utils.remote_addr_ip'
使用请求的远程地址。有利于开发和标准设置
'geoip_utils.utils.x_forwarded_ip'
选取HTTP_X_FORWARDED_FOR请求头的第一个IP。 这对负载平衡器很有用,但在某些情况下可能会被欺骗。 不过,亚马逊易北河(amazon elb)对此进行了可靠的设定。
'geoip_utils.utils.real_ip'
使用http_x_real_ip属性
geoip_cache_方法
Default: | ^{tt6}$ |
---|
用于检索位置的缓存函数。
Options: |
---|
django.contrib.gis.geoip.GeoIP.GEOIP_STANDARD
从文件系统读取数据库,使用最少的内存
django.contrib.gis.geoip.GeoIP.GEOIP_MEMORY_CACHE
将数据库加载到内存中,性能更快,但占用的内存更多
django.contrib.gis.geoip.GeoIP.GEOIP_CHECK_CACHE
检查更新的数据库。如果数据库已更新,请重新加载 文件句柄和/或内存缓存。此选项不是线程安全的,但 有利于发展。
django.contrib.gis.geoip.GeoIP.GEOIP_INDEX_CACHE
只需缓存数据库中最常访问的索引部分, 结果是查找速度比GEOIP_STANDARD快,但内存更少 使用量超过GEOIP_MEMORY_CACHE-对于大型数据库(如 Geoip组织和Geoip市。注:对于GeoIP国家、地区和 netspeed数据库,GEOIP_INDEX_CACHE相当于 GEOIP_MEMORY_CACHE。
django.contrib.gis.geoip.GeoIP.GEOIP_MMAP_CACHE
将数据库加载到mmap共享内存中(在windows上不可用)。
实用程序
有几个服务器实用程序功能可使操作更简单:
from geoip_utils import core as geoip geoip.get_country(request) geoip.get_city(request) geoip.get_lat_lon(request) geoip.get_country_code(request) geoip.get_country_name(request)
模板过滤器
模板中有用于提取所需信息的筛选器。 您需要在 模板上下文处理器:
{% load geoip_tags %} {{ request|country_code_of_request }} {{ request|city_name_of_request }} {{ request|postal_code_of_request }} {{ request|region_of_request }} {{ request|dma_code_of_request }} {{ request|area_code_of_request }} {{ request|lat_of_request }} {{ request|lon_of_request }}
管理命令
您可以运行update_geoip_data管理命令下载更新的 geoip数据到位。