如何从烧瓶中制作html弹出窗口?

时间:2017-08-09 09:10:39

标签: python html flask sqlite

我正在创建一个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('/')

1 个答案:

答案 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('/')