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数据到位。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
我们应该在测试java代码时模拟黄瓜测试吗。我们应该在多大程度上使用黄瓜?   Hibernate Weblogic 10.3.4 java。lang.NoSuchMethodError:javax/persistence/spi/PersistenceUnitInfo。getValidationMode()Ljavax/persistence/ValidationMode;   java如何在main()中访问私有静态实例变量   java JMockit无法模拟类的公共final字段   java是否可以返回特定控制器操作的输出(html)?   java如何返回正确类型的列表?   rest-OpenUI/Swagger-java-to-API   java组织。springframework。豆。工厂NoSuchBeanDefinitionException或加载ApplicationContext失败   java使用POST将参数从JSP发送到Servlet   java如何监听特定的按钮按下和主视图用户交互?   java如何让gradle在本地maven repo中覆盖库?   如何在Java中“合并”两个URI?   java如何制作一个方法来移动数组中的字符?   使用来自java的命令启动powershell窗口   java垃圾收集器和匿名类   java如何为CellTable(GWT 2.4)中的ImageResourceCell创建PanelPopup?