0
votes

Django: convertir la chaîne de chiffres en adresse IP dans Dynamic ListView

J'ai un site Web Django contenant une page avec une liste de liste. La liste, créée à partir d'une liste d'objets dans A pour boucle {% pour betr dans objet_list%} contient un champ avec adresses IP telles que {{betr.netmask}} . Les données de la liste d'objets sont fournies sous la forme d'une chaîne de nombres tels que "123456789111" .

Quelle est la meilleure façon d'afficher ceci comme 123.456.789.111 .

a essayé des fonctions Lambda ou normales importées comme utils, mais a toujours couru dans des erreurs.


0 commentaires

3 Réponses :


1
votes

Essayez de créer une balise de modèle personnalisée.

ex: strong> p> xxx pré>

dans template p>

{{ betr.netmask |toIp }}


4 commentaires

Cela n'entraînerait-il pas une adresse IP incorrecte dans ce cas? Tmoe veut convertir 123456789111 au 123.456.789.111, mais le résultat de iPaddress.ip_address ('123456789111') est de 190.153.26.119


@Nogiffioen. Je crois que OP utilise 1234 ... comme exemple dans le Que..Si pas la fonction de modèle personnalisée peut être modifiée en ce qui est nécessaire ....


C'est vrai, mais il précise également qu'il souhaite afficher 123456789111 comme 123.456.789.111. Vous avez raison si nous parlons de la conversion décimale en IP, mais si nous parlons d'ajouter des points dans ce nombre décimal, il n'est pas possible.


Juste besoin d'ajouter les points entre les deux. A déjà écrit une fonction pour le faire, mais je n'ai trouvé aucun moyen de le faire



0
votes

python 3 a module iPaddress qui présente une conversion très simple:

    a="123456789111"
    int(ipaddress.IPv4Address(a))


0 commentaires

0
votes

Je ne pense pas que cela soit possible, car un nombre pourrait se traduire par plusieurs adresses IP valides valides. Par exemple, un nombre tel que 192168211 pourrait être écrit en 192.168.2.11 ou 192.168.21.1.

Mon conseil est, soit stocker l'adresse IP comme une chaîne, soit comme la représentation réelle du nombre décimal. (Une adresse IP est après tout une valeur de 4 octets. Dans ce cas 192.168.2.11 traduirait 3232236043 et 192.168.21.1 à 3232240897)


0 commentaires