NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1696 most downloaded on PyPI
A Django application to retrieve a client's real IP address.
Last release 12 days ago
22 Sep 2026
Ships unpredictably
gaps range from 8 days to 2.4 years
Most releases are documented
notes for 34 of 45 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
45 releases · first in 2013
django-ipware is now a thin Django wrapper over python-ipware 4.1 , and uses its modern engine by default. from ipware import get_client_ip and get_cl
django-ipware is now a thin Django wrapper over
python-ipware 4.1, and uses its modern engine by default.
from ipware import get_client_ip and get_client_ip(request) work unchanged.
django-ipware<8.IPWARE_ALGORITHM = "legacy" in settings.py, or passalgorithm="legacy". The legacy algorithm is frozen.IPWARE_META_PRECEDENCE_ORDER and IPWARE_STRICT silentlyIPWARE_META_PROXY_COUNT works again. If it is in your settings, it is now enforced.proxy_trusted_ips matches exactly; it no longer1.2.3.45 for "1.2.3.4". Use a CIDR or a prefix if youValueError, e.g. an unknown proxy_order, a bare string forproxy_trusted_ips, or an empty entry.0.0.0.0 / reserved addresses are never returned.Forwarded, NAT64 and IPv4-mapped addresses understood; malformed values rejected.is_routable follows python-ipware's ranking.strict=False / IPWARE_STRICT (#122), py.typed shipped (#124), correct Optional[str]The original 7.x tests pass on both algorithms. Option-matrix tests check the modern path against
python-ipware's modern engine and the legacy path against its v3 engine, with 100% line and branch
coverage. CI covers Python 3.10–3.14 with Django 5.2, 6.0 and 6.1.
@hirotasoshu (#121, #122), @streadway (#124), @philipstarkey (#125), @btruhand (#126), @sujh (#127).
Full details: CHANGELOG.md.
One column per quarter.
up version python-ipware
up version python-ipware (#119)
Nothing published for this version
Add types for get_client_ip parameters
Add types for get_client_ip parameters
Nothing published for this version
Nothing published for this version
up version & IPWARE_META_PROXY_COUNT
up version & IPWARE_META_PROXY_COUNT
Use python-ipware under the hood starting at version 6.0.0.
Use python-ipware under the hood starting at version 6.0.0. (#106)
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Added test for django 4.0 (Thx PetrDlouhy)
Enhancement:
Added test to cover more proxy scenarios (thx: Phillip Kuhrt)
Enhancement:
Enhancement: - Clean ups
Enhancement:
Nothing published for this version
Nothing published for this version
Nothing published for this version
Add support for ppc64le (@kishorkunal-raj)
Enhancement:
Ensure no-required build artifacts won't get into the package
Fix:
Drop "official" support for py < 3.5
Enhancement:
Added more non-routable ip blocks (@wking)
Enhancement:
Added the ability to private the request precedence order on each call
Enhancement:
Added more private IP blocks to the default list
Enhancement:
Update Django versions (@illagrenan)
Fix:
Nothing published for this version
Fix trusted proxies Right2Left + Test & Bumped Django versions (@felixxm)
Fix:
Added support for trusted proxy configuration
Feature:
Added support for proxies with underscores_in_headers off;
Enhancement:
underscores_in_headers off;X-FORWARDED-FOR instead of X_FORWARDED_FORFix read me file updating IPWARE_META_PRECEDENCE_ORDER reference.
Fix:
IPWARE_META_PRECEDENCE_ORDER reference.Added support for Django 1.8.6 and Python 3.5.
Updates:
Added support for X_FORWARDED_FOR
Enhancement:
Added support for 1.0.0.0/8 and 2.0.0.0/8 blocks
Enhancement:
Enhancement: - Promoting to production grade
Enhancement:
Support for Left2Right or Right2Left Proxy IP Lookup
Enhancement:
Enhancement: - pypy support - PY3.4 support
Enhancement:
First non-loopback private IP match is best matched now.
Enhancement:
Enhancement: - Django 1.7 support - PEP8 Compliance - Bump Alpha to Beta
Enhancement:
Replaced deprecated unit test APIs
Enhancement:
Added Python 3.2 and 3.3 support
Enhancement:
Enhancement: - Added changelog file - Added more private ip prefixes
Enhancement:
Added get_ip() to return the best-matched IP
Features:
Bugfixes:
Added get_real_ip(), the shorter version of get_ip_address_from_request()
Features:
Features: - Initial Release
Features:
Your coding agent can read these notes before it upgrades. Set up the MCP server →