J'essaie ce code pour la journalisation en compte qui a une base de données dans PSQL, mais pour une raison quelconque, je ne suis possible que de rendre la page d'erreur et aucune page de réussite
username= request.form.get("uname") password = request.form.get("psw") usernamedata= db.execute("SELECT username FROM register WHERE username=:username",{"username":username}).fetchone() passworddata= db.execute("SELECT password FROM register WHERE username=:username",{"username":username}).fetchone() if usernamedata is None: return render_template("error.html") else: for pass_word in passworddata: if True: return redirect(url_for('lsuccess')) else: return render_template("error.html")
3 Réponses :
from flask import Flask, url_for, render_template, redirect app = Flask(__name__) @app.route('/') def hello_world(): username = request.form.get("uname") password = request.form.get("psw") usernamedata = db.execute("SELECT username FROM register WHERE username=:username", {"username": username}).fetchone() passworddata = db.execute("SELECT password FROM register WHERE username=:username", {"username": username}).fetchone() if usernamedata is None: return render_template("error.html") else: return redirect(url_for('lsuccess')) @app.route('/success') def lsuccess(): return render_template('your_success.html')
Lorsque je l'ai fait, seule la page de réussite est en train d'être rendue maintenant, même le mot de passe et le nom d'utilisateur est incorrect. et j'ai ajouté que si les déclarations utilisent l'autre:
J'ai le même résultat après l'édition, j'ai posté mon code ci-dessous, je ne comprends pas pourquoi cela ne fonctionne pas maintenant.
@app.route("/login", methods=['GET','POST']) def login(): return render_template("login.html") uname= request.form.get("uname") psw = request.form.get("psw") usernamedata= db.execute("SELECT username FROM register WHERE username=:username",{"username":username}).fetchone() passworddata= db.execute("SELECT password FROM register WHERE username=:username",{"username":username}).fetchone() if usernamedata is None: return render_template("error.html") else: return redirect(url_for('lsuccess')) @app.route("/lsuccess",methods=['GET','POST']) def lsuccess(): return render_template("lsuccess.html") this is what my code looks like now exactly how you told, but still its rendering the success page only. this time
Oui .. C'est le succès de la rendu car le nom d'utilisateur a été trouvé.
Son succès rendu même lorsque le nom d'utilisateur et le mot de passe ne sont pas présents dans la base de données. La page d'erreur n'est pas rendu
Essayez d'imprimer USERNAMEATA et de vérifier ce qu'il revient.
{% étend "layout.html"%} {% bloquide corbone%}
Vous devez transmettre une variable à votre vue si vous souhaitez utiliser la variable .. url_for ('lsucces', variable = USERNAMEDATA code>
Pouvez-vous utiliser le code avec une variable ajoutée dans ce domaine et où ajouter dans le fichier lsuccess.html. Dans mon ordinateur, je ne reçois pas la page d'erreur, que je suis censée obtenir lorsque le nom d'utilisateur et les données ne sont pas dans la base de données. Je suis coincé dans ce code
Je viens de regarder à nouveau votre code, vous retournez un modèle avant de vérifier n'importe quelle logique.
Où votre formulaire soumet-elle ses données?
Le formulaire est soumis à l'action = / lsuccess
Vous soumettez des informations utilisateur à lsuccess, mais la logique de l'utilisateur de chèques est dans Connexion code> C'est pourquoi votre code ne fonctionne pas. Copiez le code de Uname à un autre itinéraire .. Je posterai un Répondez maintenant à la façon dont le code devrait ressembler.
Votre formulaire soumet la demande à Copier la requête sur un autre itinéraire (la demande postale est de préférence) au total, vous aurez 3 itinéraires . P> code final doit ressembler à: p> Enfin, modifiez l'attribut lsuccess code> qui rend simplement une page de réussite sans interroger les détails de l'utilisateur.
Action code> de votre formulaire sur
action = / validation code> p> p>
J'ai copié le même code, mais maintenant une page d'erreur arrive même lorsque le mot de passe Adn Nom d'utilisateur est correct. Je devais juste changer la route ('/ validate', méthodes = ['Get', 'Post']]. Parce que cela me donnait une erreur comme méthode non autorisée.
À propos du formulaire vous donnant une erreur concernant la méthode non autorisée code>, modifiez l'attribut
de votre formulaire code> à la poste ..... et ce code ne fera que faire une page d'erreur si UsernameData n'est pas ..... Après avoir interrogé USERNAMEATA, essayez d'imprimer dans la ligne de commande et voyez le résultat ...
Merci beaucoup, j'ai fait comment vous avez dit à un moment de fonctionner correctement. Merci encore. Maintenant, la chose est que mon nom d'utilisateur est correct, un mot de passe est faux, c'est le succès de la rendu. Pouvez-vous me dire le code de le faire ...
Dans la déclaration IF où vous avez vérifié USERNAMEATA est Aucun code>, vérifiez si
PSW code> est égal à
PasswordData code> qui résoudra le problème, car ne vérifie que le nom d'utilisateur.
Je suis content de pouvoir aider .. Joyeux codage: D
recevez-vous un message d'erreur? Pourquoi êtes-vous en boucle via
Passworddata code> BTW?
Non, je ne reçois aucun message d'erreur, ce code est exécuté, c'est juste que seul le fichier error.html est rendu et non le lsuccess.html. et je suis en boucle sur les données de mot de passe pour vérifier si le mot de passe est correct pour l'utilisateur spécifique.
Remarque Vous n'êtes pas
Rendu CODE> une page, vous êtes
Redirection de Code> à une URL. Dans vos points de vue.Py Assurez-vous que la fonction qui gère cette URL rend en réalité une page.
Je suis désolé de ne pas rattraper ce que vous essayez de dire: /
Haha .. Désolé, mon mauvais, j'avais django à l'esprit .. Vérifiez la route de LSUCCESS et assurez-vous de
Render Code> Un modèle
Vous devez avoir une fonction appelée lsuccess, et la fonction doit rendre un gabarit
@ app.route ('loginpage') def lsuccess (): retour Render_template ('Whest.html') Vous pouvez maintenant utiliser le
url_for ('lsuccess') code> Ceci appellera la fonction d'itinéraire qui rendra la fonction le modèle souhaité
Avez-vous une fonction d'itinéraire
lsuccess code>?
Le code ci-dessus provient de la lsuccess uniquement, ce qui ne rend que la page d'erreur @ app.route ("/ lsuccess", méthodes = ['get', 'post']) def lsuccess (): le code que j'ai mentionné I> Ma page de connexion a le formulaire qui, lorsqu'il est soumis devrait rendre la page LSUCCESS, et si le nom d'utilisateur et le mot de passe sont faux, il devrait donner la page d'erreur.