Partage
  • Partager sur Facebook
  • Partager sur Twitter

Fonction qui se lance deux fois

    10 août 2023 à 19:55:07

    Hello ! 

    J'utilise Django pour faire tourner mes fonctions python. 

    Actuellement, dans mon fichier views, j'utilise cette fonction : 

    def dns_history(request):
        domain_name = request.POST.get("domain_na")
        print(domain_name)
    
        url = f"https://api.securitytrails.com/v1/history/{domain_name}/dns/a"
    
        print(type(domain_name))
        headers = {
            "accept": "application/json",
            "APIKEY": "monAPI"
        }
    
        response = requests.get(url, headers=headers)
    
    
        print(response.text)
        return render(request, 'toolbox/dnshistory.html', {'history_a ' : response.text,'domain': domain_name})



    Cette fonction me retourne l'historique de la zone DNS du domaine indiqué. 

    Le problème, c'est que quand je lance mon script, il se lance deux fois. 

    Si je fais un print(type()) de mon domain_name, la première fois il apparait bien en str, mais la seconde fois il apparait en "None" :

    C'est comme si mon formulaire se lancé deux fois avec rien dans le champ la deuxième fois. 

    Pourtant mon formulaire est classique : 

            <div class="container" id="cont_form">
                <div class="row">
                    <form method="post" action="">
                        {% csrf_token %}
                        <label for="domain_na"> Nom du domaine : </label>
                        <input type="text" id="domain_na" name="domain_na">
                        <button type="submit" class="btn btn-primary ">Retrouver l'historique</button>
                    </form>
                </div>
            </div>

    Une idée de ce qu'il se passe ? :-°

    -
    Edité par Rudeus 10 août 2023 à 19:55:46

    • Partager sur Facebook
    • Partager sur Twitter
      10 août 2023 à 22:30:57

      La fonction est appelée suite à une requête HTTP GET et la deuxième fois, c'est une requête POST. Comme le code ne fait pas la différence entre les deux cas, le QueryDict est vide une fois sur deux et les get() retournent None.

      Ce qui pose des tas d'autres questions sur le contenu du HTML et le routage des requêtes mais Django n'est pas un framework pour débutants: en bricolant sans trop savoir tout est possible!

      -
      Edité par mps 10 août 2023 à 22:31:38

      • Partager sur Facebook
      • Partager sur Twitter
        11 août 2023 à 14:22:05

        Le problème c'est que je n'ai rien bricolé. 

        J'ai juste créé un formulaire basique en HTML que j'ai appelé dans ma fonction pour récupérer la valeur entrée. 

        Je n'ai touché à rien d'autre qui puisse expliquer que je me retrouve avec un GET et un POST. 

        Je devrais peut être essayer d'utiliser les formulaires Django plutôt que d'utiliser ceux en HTML. 

        • Partager sur Facebook
        • Partager sur Twitter
          11 août 2023 à 15:20:27

          Rudeus a écrit:

          Je devrais peut être essayer d'utiliser les formulaires Django plutôt que d'utiliser ceux en HTML. 


          Peut-être? Avez vous de bonnes raisons de penser changera quelque chose ou est-ce que vous espérez qu'en secouant un peu le zinzin çà pourrait tomber en marche? Programmer n'est pas un jeu de loterie.
          • Partager sur Facebook
          • Partager sur Twitter

          Fonction qui se lance deux fois

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown