Wenn ich versuche, einen Benutzer zu registrieren, weiß ich nicht warum, aber wenn die E-Mail, die ich versuche zu registrieren, in der Datenbank nicht existiert, endet die for-Schleife obwohl es eine elif ende else Aussage gibt.Flask Registration Form Bedingung, wenn elif sonst nicht funktioniert
Jemand weiß warum? Diese
ist die web.py Datei
from flask import Flask, session, redirect, url_for, escape, request, render_template
from wtforms import Form, BooleanField, TextField, PasswordField, validators
import MySQLdb
import logging
app = Flask(__name__)
db = MySQLdb.connect(host="127.0.0.1", user="root", passwd="usbw", port=3307, db="tourme")
cur = db.cursor()
@app.route('/register/', methods=["GET","POST"])
def register():
email_msg = None
success_msg = None
pass_msg = None
test = None
try:
if request.method == 'POST':
id_id = None
username = request.form['name']
lastname = request.form['lastname']
email = request.form['email']
password = request.form['password']
repeat = request.form['repeat']
cur = db.cursor()
cur.execute("SELECT * FROM users WHERE email = (%s)", [email])
for row in cur.fetchall():
if row[1] == email:
email_msg = "This e-mail already exist: " + row[1]
elif password == repeat:
cur.execute("INSERT INTO users VALUES (%s,%s,%s,%s,%s)", (id_id,email,username,lastname,password))
db.commit()
success_msg = "Bravo"
db.close()
else:
pass_msg = "Password must match"
return render_template("register.html", email_msg=email_msg, success_msg=success_msg, pass_msg=pass_msg)
except Exception as e:
return(str(e))
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
if __name__ == '__main__':
app.run(debug=True)
Und das ist die Vorlage
<div class="register">
<form action="" method="POST">
<div class="input-group">
<span class="input-group-addon" id="basic-addon3">Your Username</span>
<input type="text" class="form-control" name="name" aria-describedby="basic-addon3">
</div>
<br>
<div class="input-group">
<span class="input-group-addon" id="basic-addon3">Your Lastname</span>
<input type="text" class="form-control" name="lastname" aria-describedby="basic-addon3">
</div>
<br>
<div class="input-group">
<span class="input-group-addon" id="basic-addon3">Email</span>
<input type="email" class="form-control" name="email" aria-describedby="basic-addon3">
</div>
<br>
<div class="input-group">
<span class="input-group-addon" id="basic-addon3">Your Password</span>
<input type="password" class="form-control" name="password" aria-describedby="basic-addon3">
</div>
<br>
<div class="input-group">
<span class="input-group-addon" id="basic-addon3">Repeat Password</span>
<input type="password" class="form-control" name="repeat" aria-describedby="basic-addon3">
</div>
<br>
<input type="Submit" value="Register" class="btn btn-default btn-sm">
</form>
{% if success_msg %}
<p class=success_msg><strong>Message:</strong> {{ success_msg }}
{% endif %}
{% if email_msg %}
<p class=success_msg><strong>Error:</strong> {{ email_msg }}
{% endif %}
{% if pass_msg %}
<p class=pass_msg><strong>Error:</strong> {{ pass_msg }}
{% endif %}
<br>
<a href="{{ url_for('index') }}">Home</a>
</div>
Vielen Dank für Ihre Hilfe!
Ich habe nicht Ihre Logik: erhalten alle Zeilen in der Datenbank, die die E-Mail-X, dann für jeden Zeile im Ergebnis, wenn die E-Mail nicht X ist, in die Datenbank einfügen. Warum hast du überhaupt eine Schleife? – polku
für eine X-Mail in der DB suchen –
Ja, ich könnte es ohne die Schleife tun, aber ohne die Schleife bekomme ich diese Fehlermeldung: "'NoneType' Objekt hat kein Attribut '__getitem__'" –