IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Fonction qui se lance deux fois dans mon formulaire


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2022
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2022
    Messages : 31
    Par défaut Fonction qui se lance deux fois dans mon formulaire
    Hello !

    J'utilise Django pour faire tourner mes fonctions python.

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    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" :

    Nom : error.jpg
Affichages : 109
Taille : 38,0 Ko

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

    Pourtant mon formulaire est classique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <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>
    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. Cependant, je ne vois pas comment résoudre la situation. En utilisant que du GET ?

    Une idée ?

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 716
    Par défaut
    Citation Envoyé par Rudeus Voir le message
    Une idée ?
    Ca affiche GET puis POST alors que la fonction considère que ce doit être un POST dans tous les cas.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2022
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2022
    Messages : 31
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Ca affiche GET puis POST alors que la fonction considère que ce doit être un POST dans tous les cas.

    - W
    Pour le moment je n'ai pas accès à mon projet mais il suffit que je change la méthode POST dans ma fonction par GET ainsi que dans le formulaire ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 716
    Par défaut
    Citation Envoyé par Rudeus Voir le message
    Pour le moment je n'ai pas accès à mon projet mais il suffit que je change la méthode POST dans ma fonction par GET ainsi que dans le formulaire ?
    Aucune idée: qu'est ce qui déclenche le GET? Pourquoi est-il routé vers cette fonction? Il y aurait beaucoup de choses à comprendre avant de savoir que faire. Honnêtement, je ne vois pas quel le bazar vous avez foutu pour obtenir un tel comportement.
    Quelque part, il faudrait sans doute repartir du besoin initial et imaginer comment le réaliser avec Django.
    Je n'ai pas le temps et vous n'êtes pas supposé coder avec Django sans avoir passé de longues journées à potasser les tutos pour comprendre tout çà pour vous éviter de vous retrouver dans des situations aussi bancales.
    A défaut, vous vous heurtez à un mur de complexité qui ne pourra être franchi qu'avec de la chance.

    Ceci dit, peut être que quelqu'un aura une idée géniale.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Octobre 2022
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Octobre 2022
    Messages : 31
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Aucune idée: qu'est ce qui déclenche le GET? Pourquoi est-il routé vers cette fonction? Il y aurait beaucoup de choses à comprendre avant de savoir que faire. Honnêtement, je ne vois pas quel le bazar vous avez foutu pour obtenir un tel comportement.
    Quelque part, il faudrait sans doute repartir du besoin initial et imaginer comment le réaliser avec Django.
    Je n'ai pas le temps et vous n'êtes pas supposé coder avec Django sans avoir passé de longues journées à potasser les tutos pour comprendre tout çà pour vous éviter de vous retrouver dans des situations aussi bancales.
    A défaut, vous vous heurtez à un mur de complexité qui ne pourra être franchi qu'avec de la chance.

    Ceci dit, peut être que quelqu'un aura une idée géniale.

    - W
    Pour le coup je n'ai absolument rien fait si ce n'est créer un formulaire et l'appeler dans ma fonction.

    Je n'ai rien modifié au niveau des paramétrages de Django ou autre.

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

    A tester

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 716
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 716
    Par défaut
    Citation Envoyé par Rudeus Voir le message
    Je devrais peut être essayer d'utiliser les formulaires de Django plutôt que ceux en HTML.
    Déjà conceptuellement parlant, la requête ne modifie rien donc ce devrait être un GET et non un POST.
    Après les différences entre les form Django et HTTP portent surtout sur la validation des champs mais la mécanique reste la même: ça ne devrait pas changer grand chose.

    Citation Envoyé par Rudeus Voir le message
    Pour le coup je n'ai absolument rien fait si ce n'est créer un formulaire et l'appeler dans ma fonction.
    Je n'ai rien modifié au niveau des paramétrages de Django ou autre.
    Si vous n'aviez rien fait vous n'auriez pas de problème. La question est de savoir ce que vous avez fait de "travers". Vu l'état du peu de choses que vous montrez et les questions posées (dans d'autres discussions), ce peut être très ouvert...
    Les débutants peuvent être très créatifs: faire une boulette ici parce qu'on pense que... qui aura des effets de bord bien plus loin et difficile à démêler.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. fonction qui se lance deux fois au lieu d'une
    Par nagyp dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/08/2020, 10h38
  2. [ODS] SGPLOT qui apparaît deux fois dans mon RTF + caractères spéciaux
    Par alers dans le forum ODS et reporting
    Réponses: 0
    Dernier message: 19/04/2017, 10h23
  3. MSCRM 4.0 : utiliser un champ deux fois dans un formulaire
    Par irid dans le forum Microsoft Dynamics CRM
    Réponses: 4
    Dernier message: 09/06/2010, 10h39
  4. Deux passages dans mon "execute" pour une seule soumission
    Par fabricew59 dans le forum Struts 1
    Réponses: 7
    Dernier message: 27/06/2006, 14h24
  5. Pop-up qui s'ouvre deux fois
    Par arnapou dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/06/2006, 08h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo