我正在创建一个Web应用程序,并在python上使用flask,我已经创建了一个注册系统,用户可以在该系统上签名并保存在sqlite3数据库中的详细信息(电子邮件,用户名和密码) 。如果用户在注册时输入用户名或电子邮件,并且用户名或电子邮件在数据库中,则会将您带回登录页面并且不保存其数据,我已经这样做了,我该如何制作所以当它重定向回到表单页面时会弹出一个错误消息?
Html代码:
<!DOCTYPE html>
<html class='signIn'>
{% extends "layout.html" %}
{% block content %}
<body>
<center>
<form name='myForm' method="post" action="{{ url_for('signup') }}" style='text-align: center;'>
<p>Email</p>
<input type="email" name="email" placeholder='Enter you email adress' required oninvalid="setCustomValidity('Please enter a valid email ')" onchange="try{setCustomValidity('')}catch(e){}"></input>
<p>Username</p>
<input type="text" name="user" placeholder='Enter your username' required></input>
<p>Password</p>
<input type="password" name="password" placeholder='Enter your password' required></input>
<br><br>
<input type="submit" value="Signup"></input>
<a href="{{ url_for('home') }}" class='button_link'>Cancel</a>
</form>
</center>
</body>
{% endblock %}
</html>
相关的python代码:
def signup():
cur = g.db.cursor()
email = request.form['email']
username = request.form['user']
password = request.form['password']
cur.execute("""SELECT email,username FROM users WHERE email=? OR username=?""",(email, username))
result = cur.fetchone()
if result:
return redirect('/form/')
else:
cur.execute("INSERT INTO users VALUES (?, ?, ?)", [email, username, password])
g.db.commit()
return redirect('/')
答案 0 :(得分:1)
这不是一个弹出窗口,但是您可以使用烧瓶的消息传递系统。这是“ flash”命令。
要在您的代码中使用它,它可能看起来像这样: 如果结果: flash('您已经注册,请登录')
return redirect('/form/')
else:
cur.execute("INSERT INTO users VALUES (?, ?, ?)", [email, username, password])
g.db.commit()
flash('Thank you for registering')
return redirect('/')