【发布时间】:2016-01-28 13:39:33
【问题描述】:
尝试为我的应用创建一个注册页面。我正在使用来自pythonanywhere.com 的 Flask 框架和 MySQL 数据库。
@app.route('/register/', methods=["GET","POST"])
def register_page():
try:
form = RegistrationForm(request.form)
if request.method == "POST" and form.validate():
email = form.email.data
password = sha256_crypt.encrypt((str(form.password.data)))
c, conn = connection()
x = c.execute("SELECT * FROM users WHERE email = (%s)",
(email))
if int(x) > 0:
flash("That email adress is already in use.")
return render_template('register.html', form=form)
else:
c.execute("INSERT INTO users (email, password) VALUES (%s, %s)",
(thwart(email),thwart(password)))
conn.commit()
flash("Thanks for registering!")
c.close()
conn.close()
gc.collect()
session['logged_in'] = True
session['email'] = email
return redirect(url_for('dashboard'))
return render_template("sign-up.html", form=form)
except Exception as e:
return(str(e))}
运行时出现错误:字符串格式化期间并非所有参数都被转换。 如何解决?可能是这个声明中的问题?
c.execute("INSERT INTO users (email, password) VALUES (%s, %s)",
(thwart(email),thwart(password)))
【问题讨论】:
-
您是否 100% 确定错误发生在该行?我认为问题更可能出在上面的 x = c.execute() 行,您应该将
(email,)- 注意尾随逗号 - 作为最后一个参数,而不是(email)没有尾随逗号。 -
我将
(email)更改为(email,)并得到相同的结果 -
成功了!我只是没有重新启动服务器。谢谢!
标签: python mysql flask pythonanywhere