- March 10, 2009
- settings ip-addresses cidr internal-ips
- 4 (after 4 ratings)
A simple addition to the settings.py file of your project to allow you to easily specify entire network ranges as internal. This is especially useful in conjunction with other tools such as the Django Debug Toolbar.
After you set this up, the following test should pass
test_str = """ >>> '192.168.1.5' in INTERNAL_IPS True >>> '192.168.3.5' in INTERNAL_IPS FALSE """
- The IPy module
Jeremy Dunck: The initial code for this idea is by Jeremy and in Django ticket #3237. I just changed the module and altered the use of the list superclass slightly. I mainly wanted to put the code here for safe keeping. Thanks Jeremy!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
class IPList(list): def __init__(self, ips): try: #http://software.inl.fr/trac/wiki/IPy #ubuntu: apt-get install python-ipy from IPy import IP for ip in ips: self.append(IP(ip)) except ImportError: pass def __contains__(self, ip): try: for net in self: if ip in net: return True except: pass return False INTERNAL_IPS = IPList(['127.0.0.1', '192.168.1.0/24'])