Flask : return de mes boutons sans effet

Résolu/Fermé
Utilisateur anonyme - Modifié le 12 oct. 2018 à 12:02
 Utilisateur anonyme - 13 oct. 2018 à 09:29
Bonjour, c'est de nouveau moi avec de nouveau des soucis de code ...

je me fait la main sur python & flask depuis maintenant 1 semaine mais certain bug persistes sans que je sache trop pourquoi ... j’espère que vous saurez m'expliqué au moins celui la qui est le plus pénible.

j'ai implémenté divers boutons pour divers fonction mais peut importe leurs fonctions, quand je clique dessus rien ne ce passe mise a part mon url qui indique le retour du bouton.

par exemple sur ma page http://localhost:4000/ (formulaire d'authentification)
je remplie mes inputs et clique sur mon bouton LOGIN
a ce moment la ma page ce reset et mon url indique : http://localhost:4000/?submitB=signIN
avec le bouton 'Sign up' , reset la page et url suivante : http://localhost:4000/?submitB=signUP

ou est le soucis ? et bien mise a part l'url qu change rien de ce que j'attend ne ce passe ...
pas de redirection vers subscribe.html lors de l'appuis sur 'signUP'
pas de connection valide lors de l'appuis sur 'signIN'

(pourtant, concernant 'Sign in' je fourni bien admin en pwd et user donc ca devrais fonctionner ... )

code html =>
<div class="container">
  <h1>welcome</h1>

  <form class="form">
   <input type="username" placeholder="Username">
   <input type="password" placeholder="Password">
   <button type="submit" name="submitB" value="signIN">Login</button>
                     <button type="submit" name="submitB" value="signUP">Sign up</button>
  </form>
 </div>


code python =>
@app.route('/login')
def reactBut():
    if request.method == 'POST':
        if request.form['submitB'] == 'signIN':
            if (request.form['username'] == 'admin' and request.form['password'] == 'admin'):
                session['logged_in'] == True
            else:
                return redirect("login.html")
        elif request.form['submitB'] == 'signUP':
            return redirect("subscribe.html")
        else:
            return redirect("login.html")
    elif request.method == 'GET':
        return render_template("login.html", form=form)
    return home()


voila les morceaux de code responsable du bug.
j’espère avoir était assez precis . merci

2 réponses

Salut,

Je n'y connais pas grand chose en html ni même à flask, mais là il me semble que ton formulaire est en get, et non en post, il faut donc le spécifier avec l'attribut method du form, idem pour l'action si tu veux que la validation se fasse sur une autre url, il faut le spécifier dans l'attribut action du form html.
1
Astrocurieux
12 oct. 2018 à 20:04
Bonsoir huni.

Tu m'intrigues pas mal avec cette histoire de get et post.
J'avoue ne pas y comprendre grand chose.
Je vais me renseigner.
Merci
0
Utilisateur anonyme
13 oct. 2018 à 09:17
grace a mes recherche faisant suite a ta remarque j'ai pue corriger et comprendre certain trucs .
j'ai donc modifié un peu mon code.

j'ai une erreur qui pop quand je clique sur mon bouton login .
Method Not Allowed
The method is not allowed for the requested URL.

je continue de chercher dans cette direction, si tu as encore de bon conseils je reste a l’écoute .
je vais mettre mon poste a jour.
0
Utilisateur anonyme
13 oct. 2018 à 09:29
voici mes progression en terme de code :

mon message d'erreur actuel : Method Not Allowed - The method is not allowed for the requested URL.

html :
<form class="form" action="/login" method="post">
			<input type="text" placeholder="[ Username ]">
			<input type="password" placeholder="[ Password ]">
			<button type="submit">Login</button>
      <br><br><br>
      <a href="signup" class="but">Sign up</a>
		</form>


python :
@app.route('/login')
def reactBut():
    if request.method == 'POST':
        if (request.form['username'] == 'admin' and request.form['password'] == 'admin'):
            session['logged_in'] == True
        else:
            return redirect("login.html")
    elif request.method == 'GET':
        return render_template("login.html", form=form)
    return home()


je n'est plus de soucis avec le bouton 'Signup' j'ai finalement définie mon bouton html ainsi :

<a href="signup" class="but">Sign up</a>


qui renvoie vers :

@app.route('/signup')
def signup():
    if request.method == 'POST':
        pass
    elif request.method == 'GET':
        return render_template('signup.html')
    return home()


et ca fonctionne. (les if sont temporaire)
1