While some of us are blessed with fixed IP addresses, some ISPs don’t offer this option unfortunately. If you’re using the Django
INTERNAL_IPS setting to show or hide the debug toolbar this can be a problem.
Luckily the Django
settings.py files are pure Python and it’s easy enough to work around this issue with a few lines of code:
import sys INTERNAL_IPS = [ # Any fixed internal IPs ] INTERNAL_HOSTS = [ # Some dyndns host # Some no-ip host # etc... # For example: 'wol.ph', ] # Only enable when running through the runserver command if 'runserver' in sys.argv: import dns.resolver resolver = dns.resolver.Resolver() # Set the timeout to 1 so we don't wait too long resolver.timeout = 1 resolver.lifetime = 1 for host in INTERNAL_HOSTS: try: # For ipv6 you can use AAAA instead of A here ip = resolver.query(host, 'A').address INTERNAL_IPS.append(ip) except dns.exception.Timeout: print('Unable to resolve %r, skipping' % host)
Note that the code above uses dnspython which can be installed through pip.