from flask import Flask, url_for, render_template, redirect
app = Flask(__name__)
@app.route('/')
def hello_world():
...
...
#Don't know why you added an if Statement here
if True:
# 'lsuccess' is the name of your route function you are redirecting to
return redirect(url_for('lsuccess'))
#this statement is never reachable
else:
return render_template("error.html")
#You NEED A ROUTE FUNCTION named lsuccess, in this function, `render a template`
@app.route('/success')
def lsuccess():
return render_template('your_success.html')
if True
не повлияет на ваш код, так как условие всегда будет True, а блок else
никогда не запустится.
Условие if usernamedata is None
является достаточным условием чтобы убедиться, что пользователь существует.
В операторе else passworddata возвращает только одно значение, например, "password"
, использование for l oop будет перебирать каждый символ, например p
, a
и т. д. on.
Удалите for l oop, удалите if True
, а затем удалите блок else
.
Окончательный код должен выглядеть так:
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')