geoip2.txt 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. =======================
  2. Geolocation with GeoIP2
  3. =======================
  4. .. module:: django.contrib.gis.geoip2
  5. :synopsis: Python interface for MaxMind's GeoIP2 databases.
  6. The :class:`GeoIP2` object is a wrapper for the `MaxMind geoip2 Python
  7. library`__. [#]_
  8. In order to perform IP-based geolocation, the :class:`GeoIP2` object requires
  9. the `geoip2 Python library`__ and the GeoIP ``Country`` and/or ``City``
  10. `datasets in binary format`__ (the CSV files will not work!). Grab the
  11. ``GeoLite2-Country.mmdb.gz`` and ``GeoLite2-City.mmdb.gz`` files and unzip them
  12. in a directory corresponding to the :setting:`GEOIP_PATH` setting.
  13. Additionally, it is recommended to install the `libmaxminddb C library`__, so
  14. that ``geoip2`` can leverage the C library's faster speed.
  15. __ https://geoip2.readthedocs.io/
  16. __ https://pypi.org/project/geoip2/
  17. __ https://dev.maxmind.com/geoip/geoip2/geolite2/
  18. __ https://github.com/maxmind/libmaxminddb/
  19. Example
  20. =======
  21. Here is an example of its usage::
  22. >>> from django.contrib.gis.geoip2 import GeoIP2
  23. >>> g = GeoIP2()
  24. >>> g.country('google.com')
  25. {'country_code': 'US', 'country_name': 'United States'}
  26. >>> g.city('72.14.207.99')
  27. {'city': 'Mountain View',
  28. 'continent_code': 'NA',
  29. 'continent_name': 'North America',
  30. 'country_code': 'US',
  31. 'country_name': 'United States',
  32. 'dma_code': 807,
  33. 'is_in_european_union': False,
  34. 'latitude': 37.419200897216797,
  35. 'longitude': -122.05740356445312,
  36. 'postal_code': '94043',
  37. 'region': 'CA',
  38. 'time_zone': 'America/Los_Angeles'}
  39. >>> g.lat_lon('salon.com')
  40. (39.0437, -77.4875)
  41. >>> g.lon_lat('uh.edu')
  42. (-95.4342, 29.834)
  43. >>> g.geos('24.124.1.80').wkt
  44. 'POINT (-97 38)'
  45. API Reference
  46. =============
  47. .. class:: GeoIP2(path=None, cache=0, country=None, city=None)
  48. The ``GeoIP`` object does not require any parameters to use the default
  49. settings. However, at the very least the :setting:`GEOIP_PATH` setting
  50. should be set with the path of the location of your GeoIP datasets. The
  51. following initialization keywords may be used to customize any of the
  52. defaults.
  53. =================== =======================================================
  54. Keyword Arguments Description
  55. =================== =======================================================
  56. ``path`` Base directory to where GeoIP data is located or the
  57. full path to where the city or country data files
  58. (``.mmdb``) are located. Assumes that both the city and
  59. country datasets are located in this directory;
  60. overrides the :setting:`GEOIP_PATH` setting.
  61. ``cache`` The cache settings when opening up the GeoIP datasets. May
  62. be an integer in (0, 1, 2, 4, 8) corresponding to the
  63. ``MODE_AUTO``, ``MODE_MMAP_EXT``, ``MODE_MMAP``, and
  64. ``GEOIP_INDEX_CACHE`` ``MODE_MEMORY`` C API settings,
  65. respectively. Defaults to 0 (``MODE_AUTO``).
  66. ``country`` The name of the GeoIP country data file. Defaults
  67. to ``GeoLite2-Country.mmdb``. Setting this keyword
  68. overrides the :setting:`GEOIP_COUNTRY` setting.
  69. ``city`` The name of the GeoIP city data file. Defaults to
  70. ``GeoLite2-City.mmdb``. Setting this keyword overrides
  71. the :setting:`GEOIP_CITY` setting.
  72. =================== =======================================================
  73. Methods
  74. =======
  75. Instantiating
  76. -------------
  77. .. classmethod:: GeoIP2.open(path, cache)
  78. This classmethod instantiates the GeoIP object from the given database path
  79. and given cache setting.
  80. Querying
  81. --------
  82. All the following querying routines may take either a string IP address
  83. or a fully qualified domain name (FQDN). For example, both
  84. ``'205.186.163.125'`` and ``'djangoproject.com'`` would be valid query
  85. parameters.
  86. .. method:: GeoIP2.city(query)
  87. Returns a dictionary of city information for the given query. Some
  88. of the values in the dictionary may be undefined (``None``).
  89. .. method:: GeoIP2.country(query)
  90. Returns a dictionary with the country code and country for the given
  91. query.
  92. .. method:: GeoIP2.country_code(query)
  93. Returns the country code corresponding to the query.
  94. .. method:: GeoIP2.country_name(query)
  95. Returns the country name corresponding to the query.
  96. Coordinate Retrieval
  97. --------------------
  98. .. method:: GeoIP2.coords(query)
  99. Returns a coordinate tuple of (longitude, latitude).
  100. .. method:: GeoIP2.lon_lat(query)
  101. Returns a coordinate tuple of (longitude, latitude).
  102. .. method:: GeoIP2.lat_lon(query)
  103. Returns a coordinate tuple of (latitude, longitude),
  104. .. method:: GeoIP2.geos(query)
  105. Returns a :class:`~django.contrib.gis.geos.Point` object corresponding to the
  106. query.
  107. Settings
  108. ========
  109. .. setting:: GEOIP_PATH
  110. ``GEOIP_PATH``
  111. --------------
  112. A string or :class:`pathlib.Path` specifying the directory where the GeoIP data
  113. files are located. This setting is *required* unless manually specified
  114. with ``path`` keyword when initializing the :class:`GeoIP2` object.
  115. .. setting:: GEOIP_COUNTRY
  116. ``GEOIP_COUNTRY``
  117. -----------------
  118. The basename to use for the GeoIP country data file. Defaults to
  119. ``'GeoLite2-Country.mmdb'``.
  120. .. setting:: GEOIP_CITY
  121. ``GEOIP_CITY``
  122. --------------
  123. The basename to use for the GeoIP city data file. Defaults to
  124. ``'GeoLite2-City.mmdb'``.
  125. Exceptions
  126. ==========
  127. .. exception:: GeoIP2Exception
  128. The exception raised when an error occurs in a call to the underlying
  129. ``geoip2`` library.
  130. .. rubric:: Footnotes
  131. .. [#] GeoIP(R) is a registered trademark of MaxMind, Inc.