Domanda

I have a IP Block calculator web application that will print a range of IP addresses based on slashes. However it only saves the last record in the range into the text field. I want to be able to save it all to the text field.

I am using python-ipy with my code. Look at the last for loop "rangeip",

Here is my code:

#ip block and range save function 

def save(obj, *args, **kwargs):

        subnet = unicode(obj.subnet)

        first = IP(obj.ip_start + subnet).net()
        broadcast = IP(obj.ip_start + subnet).broadcast()

        print first
        print broadcast

        obj.broadcast_ip = broadcast

        ip_block = IP(obj.ip_start + subnet)
        ip_block.WantPrefixLen = 3


        ip = IP(obj.ip_start + subnet)

        for gateway in ip[1]:
            obj.gateway_ip = gateway
            print gateway

        #rangeip for loop

        for rangeip in ip:
            obj.ip_range = rangeip
            print rangeip

        super(IP_block, obj).save(*args, **kwargs)

This is what I would like, to be able to save the list into a text field, it only saves the last ip: 192.168.1.31

Example I would like:

192.168.1.1 192.168.1.0 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 192.168.1.5 192.168.1.6 192.168.1.7 192.168.1.8 192.168.1.9 192.168.1.10 192.168.1.11 192.168.1.12 192.168.1.13 192.168.1.14 192.168.1.15 192.168.1.16 192.168.1.17 192.168.1.18 192.168.1.19 192.168.1.20 192.168.1.21 192.168.1.22 192.168.1.23 192.168.1.24 192.168.1.25 192.168.1.26 192.168.1.27 192.168.1.28 192.168.1.29 192.168.1.30 192.168.1.31

Any help is greatly appreciate it.

È stato utile?

Soluzione

obj.ip_range = rangeip is an assignment. You are replacing the content of obj.ip_range with the new rangeip.

What you need to do is:

obj.ip_range += "%s"%rangeip
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top